{"version":3,"file":"static/js/main.85323283.js","mappings":"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Y,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,YACxC,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YACxC,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,SAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,SAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,UAAY,WAAY,UAAY,WACpC,WAAY,UAAY,SAAY,UACpC,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CG,CAACruG,EAAS,CAACquG,EAAM,gBAAgBc,IAAW,CAC/C,2BACG,CAAC,CAACd,EAAM,OAAQ,aAAac,GAAUnvG,GAAU,CACpD,uBACG,CAACA,EAAS,CAACquG,EAAMgB,EAAQ,WAAY,CACxC,qBACG,CAACrvG,EAAS,CAACquG,EAAMsB,EAAM,WAAY,CACtC,0BACG,CAAC3vG,EAAS,CAACquG,EAAM,YAAa,CACjC,sBACG,CAACruG,EAAS,CAACquG,EAAM,YAAa,CACjC,qBACG,CAACruG,EAAS,CAACquG,EAAMsB,EAAM,WAAY,CACtC,2BACG,CAAC3vG,EAAS,CAACquG,EAAM,OAAS+B,IAAkB,CAC/C,sBACG,CAACpwG,EAAS,CAACquG,EAAMgB,IAAW,CAC/B,+BACG,CAACrvG,EAAS,CAACquG,EAAM,QAAS,CAC7B,sBACG,CAAC,CAACA,EAAM,OAAQ,aAAcruG,GAAU,CAC3C,yDACG,CAAC,CAACquG,EAAM,OAAQ,KAAO+B,GAAiBpwG,GAAU,CACrD,8BACG,CAACA,EAAS,CAACquG,EAAMuB,EAAU,cAAe,CAC7C,0BACG,CAAC5vG,EAAS,CAACquG,EAAM,mBAAoB,CACxC,4BACG,CAAC,CAACA,EAAM,gBAAiBruG,GAAU,CACtC,gCACA,iDACA,sEACG,CAACquG,EAAMruG,GAAU,CACpB,sBACA,sBACG,CAACquG,GAAO,CACX,kCACA,oCACG,CAACruG,EAASquG,GAAO,CAGpB,+DACG,CAAC,CAACA,EAAM4B,GAAWjwG,GAAU,CAChC,uBACA,uCACA,kCACA,4BACA,4BACA,6BACA,qCACA,iDACG,CAACquG,EAAMruG,GAAU,CACpB,gCACG,CAACA,EAAS,CAACquG,EAAM,QAAS,CAC7B,8CACG,CAACruG,EAAS,CAACquG,EAAM,WAAY,CAEhC,oCACG,CAACruG,EAAS,CAACquG,EAAMe,EAAO,cAAe,CAE1C,+BACG,CAAC,CAACf,EAAMe,EAAO,YAAapvG,GAAU,CAEzC,2DACG,CAACA,EAAS,CAACquG,EAAM,WAAWc,IAAW,CAE1C,+DACG,CAACd,EAAMruG,GAAU,CAEpB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CACG,CAACA,EAASquG,IAGjBn6D,GAAK,CAAC,CAGF,mCACG,CAACm6D,EAAMruG,GAAU,CACpB,yDACG,CAACquG,EAAM,CAACruG,EAAS6wG,EAAWC,IAAqB,CACpD,0BACA,2CACA,wCACG,CAAC,CAAC9wG,EAAS6wG,EAAWC,GAAoB,CAACzC,EAAM,YAAa,CAGjE,sDACA,4CACA,wBACG,CAAC,CAACruG,EAAS,KAAM,KAAM,CAACquG,EAAM,QAAS,CAC1C,0BACA,yCACG,CAAC,CAACA,EAAM8B,GAAS,CAACnwG,EAAS,KAAM,MAAO,CAG3C,kDACG,CAACA,EAASquG,GAAO,CACpB,2FACA,8BACA,+BACA,kBACG,CAACA,EAAMruG,GAAU,CACpB,cACG,CAACA,EAAS,CAACquG,EAAMa,IAAc,CAClC,6DACG,CAAClvG,EAAS,CAACquG,EAAM,YAAa,CACjC,mFACG,CAACruG,EAAS,CAACquG,EAAMgB,EAAQ,QAAS,CACrC,kBACA,wCACG,CAACrvG,EAAS,CAACquG,EAAM,UAAW,CAC/B,wCACG,CAACruG,EAAS,CAACquG,EAAM,YAAa,CAGjC,qBACG,CAACruG,EAAS,CAACquG,EAAMe,EAAO,SAAU,CACrC,oCACG,CAAC,CAACf,EAAM6B,GAAclwG,GAAS,CAGlC,qBACA,iBACA,2BAGA,mDACA,2BAGA,wCACA,yBACA,4BACA,8SAEA,2BACA,oBACA,6EACA,kBACG,CAACquG,EAAMruG,GAAU,CACpB,yBACG,CAAC,CAACquG,EAAM,WAAYruG,GAAU,CACjC,sCACA,kCACA,mEACA,sBACG,CAACquG,EAAMruG,KAQdoxG,EAAW,SAAU/yD,EAAIgY,GAOzB,UALWhY,IAAO4vD,IACd53C,EAAahY,EACbA,EAAKh8C,KAGHjJ,gBAAgBg4G,GAClB,OAAO,IAAIA,EAAS/yD,EAAIgY,GAAYg7C,YAGxC,IAAIC,SAAqBxxG,IAAWkuG,GAAcluG,EAAOo/C,UAAap/C,EAAOo/C,UAAY78C,EACrFkvG,EAAMlzD,IAAQizD,GAAcA,EAAWrxD,UAAaqxD,EAAWrxD,UA31BrD,IA41BVuxD,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","sources":["../node_modules/@opentelemetry/api/src/context/NoopContextManager.ts","../node_modules/@opentelemetry/api/src/api/context.ts","../node_modules/@opentelemetry/api/src/diag/ComponentLogger.ts","../node_modules/@opentelemetry/api/src/api/diag.ts","../node_modules/@opentelemetry/api/src/diag/internal/logLevelLogger.ts","../node_modules/@opentelemetry/api/src/baggage/internal/baggage-impl.ts","../node_modules/@opentelemetry/api/src/baggage/internal/symbol.ts","../node_modules/@opentelemetry/api/src/baggage/utils.ts","../node_modules/@opentelemetry/api/src/context-api.ts","../node_modules/@opentelemetry/api/src/context/context.ts","../node_modules/@opentelemetry/api/src/diag-api.ts","../node_modules/@opentelemetry/api/src/diag/types.ts","../node_modules/@opentelemetry/api/src/platform/browser/globalThis.ts","../node_modules/@opentelemetry/api/src/version.ts","../node_modules/@opentelemetry/api/src/internal/semver.ts","../node_modules/@opentelemetry/api/src/internal/global-utils.ts","../node_modules/@opentelemetry/api/src/propagation/NoopTextMapPropagator.ts","../node_modules/@opentelemetry/api/src/propagation/TextMapPropagator.ts","../node_modules/@opentelemetry/api/src/baggage/context-helpers.ts","../node_modules/@opentelemetry/api/src/api/propagation.ts","../node_modules/@opentelemetry/api/src/propagation-api.ts","../node_modules/@opentelemetry/api/src/trace/context-utils.ts","../node_modules/@opentelemetry/api/src/trace/NoopTracer.ts","../node_modules/@opentelemetry/api/src/trace/ProxyTracer.ts","../node_modules/@opentelemetry/api/src/trace/ProxyTracerProvider.ts","../node_modules/@opentelemetry/api/src/trace/NoopTracerProvider.ts","../node_modules/@opentelemetry/api/src/api/trace.ts","../node_modules/@opentelemetry/api/src/trace-api.ts","../node_modules/@opentelemetry/api/src/trace/NonRecordingSpan.ts","../node_modules/@opentelemetry/api/src/trace/SamplingResult.ts","../node_modules/@opentelemetry/api/src/trace/invalid-span-constants.ts","../node_modules/@opentelemetry/api/src/trace/spancontext-utils.ts","../node_modules/@opentelemetry/api/src/trace/trace_flags.ts","../node_modules/@opentelemetry/core/src/ExportResult.ts","../node_modules/@opentelemetry/core/src/baggage/constants.ts","../node_modules/@opentelemetry/core/src/baggage/propagation/W3CBaggagePropagator.ts","../node_modules/@opentelemetry/core/src/baggage/utils.ts","../node_modules/@opentelemetry/core/src/common/attributes.ts","../node_modules/@opentelemetry/core/src/common/global-error-handler.ts","../node_modules/@opentelemetry/core/src/common/logging-error-handler.ts","../node_modules/@opentelemetry/core/src/common/time.ts","../node_modules/@opentelemetry/core/src/common/anchored-clock.ts","../node_modules/@opentelemetry/core/src/common/hex-to-binary.ts","../node_modules/@opentelemetry/core/src/platform/browser/RandomIdGenerator.ts","../node_modules/@opentelemetry/core/src/platform/browser/hex-to-base64.ts","../node_modules/@opentelemetry/core/src/trace/rpc-metadata.ts","../node_modules/@opentelemetry/core/src/trace/sampler/AlwaysOffSampler.ts","../node_modules/@opentelemetry/core/src/trace/sampler/AlwaysOnSampler.ts","../node_modules/@opentelemetry/core/src/trace/sampler/ParentBasedSampler.ts","../node_modules/@opentelemetry/core/src/trace/sampler/TraceIdRatioBasedSampler.ts","../node_modules/@opentelemetry/core/src/utils/timeout.ts","../node_modules/@opentelemetry/core/src/utils/wrap.ts","../node_modules/@opentelemetry/core/src/index.ts","../node_modules/@opentelemetry/core/src/internal/exporter.ts","../node_modules/@opentelemetry/core/src/platform/browser/environment.ts","../node_modules/@opentelemetry/core/src/platform/browser/globalThis.ts","../node_modules/@opentelemetry/core/src/platform/browser/performance.ts","../node_modules/@opentelemetry/core/src/platform/browser/sdk-info.ts","../node_modules/@opentelemetry/core/src/platform/browser/timer-util.ts","../node_modules/@opentelemetry/core/src/propagation/composite.ts","../node_modules/@opentelemetry/core/src/internal/validators.ts","../node_modules/@opentelemetry/core/src/trace/TraceState.ts","../node_modules/@opentelemetry/core/src/trace/W3CTraceContextPropagator.ts","../node_modules/@opentelemetry/core/src/trace/suppress-tracing.ts","../node_modules/@opentelemetry/core/src/utils/promise.ts","../node_modules/@opentelemetry/core/src/utils/callback.ts","../node_modules/@opentelemetry/core/src/utils/environment.ts","../node_modules/@opentelemetry/core/src/utils/lodash.merge.ts","../node_modules/@opentelemetry/core/src/utils/merge.ts","../node_modules/@opentelemetry/core/src/utils/sampling.ts","../node_modules/@opentelemetry/core/src/utils/url.ts","../node_modules/@opentelemetry/core/src/version.ts","../node_modules/@opentelemetry/otlp-transformer/src/common/internal.ts","../node_modules/@opentelemetry/otlp-transformer/src/common/utils.ts","../node_modules/@opentelemetry/otlp-transformer/src/trace/internal-types.ts","../node_modules/@opentelemetry/otlp-transformer/src/trace/internal.ts","../node_modules/@opentelemetry/semantic-conventions/src/internal/utils.ts","../node_modules/@opentelemetry/semantic-conventions/src/resource/SemanticResourceAttributes.ts","../node_modules/@protobufjs/aspromise/index.js","../node_modules/@protobufjs/base64/index.js","../node_modules/@protobufjs/codegen/index.js","../node_modules/@protobufjs/eventemitter/index.js","../node_modules/@protobufjs/fetch/index.js","../node_modules/@protobufjs/float/index.js","../node_modules/@protobufjs/inquire/index.js","../node_modules/@protobufjs/path/index.js","../node_modules/@protobufjs/pool/index.js","../node_modules/@protobufjs/utf8/index.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/device-uuid/index.js","../node_modules/device-uuid/lib/device-uuid.js","../node_modules/extend/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/inline-style-parser/index.js","../node_modules/protobufjs/index.js","../node_modules/protobufjs/src/common.js","../node_modules/protobufjs/src/converter.js","../node_modules/protobufjs/src/decoder.js","../node_modules/protobufjs/src/encoder.js","../node_modules/protobufjs/src/enum.js","../node_modules/protobufjs/src/field.js","../node_modules/protobufjs/src/index-light.js","../node_modules/protobufjs/src/index-minimal.js","../node_modules/protobufjs/src/index.js","../node_modules/protobufjs/src/mapfield.js","../node_modules/protobufjs/src/message.js","../node_modules/protobufjs/src/method.js","../node_modules/protobufjs/src/namespace.js","../node_modules/protobufjs/src/object.js","../node_modules/protobufjs/src/oneof.js","../node_modules/protobufjs/src/parse.js","../node_modules/protobufjs/src/reader.js","../node_modules/protobufjs/src/reader_buffer.js","../node_modules/protobufjs/src/root.js","../node_modules/protobufjs/src/roots.js","../node_modules/protobufjs/src/rpc.js","../node_modules/protobufjs/src/rpc/service.js","../node_modules/protobufjs/src/service.js","../node_modules/protobufjs/src/tokenize.js","../node_modules/protobufjs/src/type.js","../node_modules/protobufjs/src/types.js","../node_modules/protobufjs/src/util.js","../node_modules/protobufjs/src/util/longbits.js","../node_modules/protobufjs/src/util/minimal.js","../node_modules/protobufjs/src/verifier.js","../node_modules/protobufjs/src/wrappers.js","../node_modules/protobufjs/src/writer.js","../node_modules/protobufjs/src/writer_buffer.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lazy-load-image-component/build/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shimmer/index.js","../node_modules/style-to-object/src/index.ts","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/zone.js/fesm2015/zone.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/react-redux/es/index.js","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","features/counter/counterSlice.ts","features/counter/counterAPI.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","app/store.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","assets/images/fabrice-ai-logo.svg","assets/images/new-chat.svg","assets/images/sidebar-toggle.svg","assets/images/mic.svg","assets/images/send.svg","assets/images/send-disabled.svg","assets/images/scroll-down.svg","assets/images/user-chat.svg","assets/images/ai-chat.svg","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/parseISO.js","../node_modules/date-fns/constructNow.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/isSameDay.js","../node_modules/date-fns/isToday.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/isYesterday.js","../node_modules/date-fns/isWithinInterval.js","../node_modules/date-fns/isSameMonth.js","../node_modules/date-fns/isThisMonth.js","../node_modules/date-fns/isSameYear.js","../node_modules/date-fns/isThisYear.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/format.js","utils/Utils.ts","../node_modules/estree-util-is-identifier-name/lib/index.js","../node_modules/hast-util-whitespace/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/esm/index.mjs","../node_modules/unist-util-position/lib/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/hast-util-to-jsx-runtime/lib/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/html-url-attributes/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/remark-parse/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/bail/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/react-markdown/lib/index.js","types/Types.ts","../node_modules/react-voice-visualizer/dist/react-voice-visualizer.js","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/ai/index.mjs","../node_modules/react-toastify/node_modules/clsx/dist/clsx.mjs","../node_modules/livekit-client/node_modules/.pnpm/@livekit+mutex@1.1.1/node_modules/@livekit/mutex/dist/index.mjs","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/assert.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/enum.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/message.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/google/varint.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/scalar.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/binary-encoding.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/scalars.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/extensions.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/proto-base64.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/extension-accessor.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/reflect.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/is-message.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/field-wrapper.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/json-format.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/binary-format.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/util-common.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/field-list.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/names.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/field.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/proto3.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/proto-runtime.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/field-normalize.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/private/message-type.js","../node_modules/livekit-client/node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/esm/google/protobuf/timestamp_pb.js","../node_modules/livekit-client/node_modules/.pnpm/@livekit+protocol@1.30.0/node_modules/@livekit/protocol/dist/index.mjs","../node_modules/livekit-client/src/logger.ts","../node_modules/livekit-client/node_modules/.pnpm/loglevel@1.9.2/node_modules/loglevel/lib/loglevel.js","../node_modules/livekit-client/src/room/DefaultReconnectPolicy.ts","../node_modules/livekit-client/node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/utils.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/safari/safari_shim.js","../node_modules/livekit-client/node_modules/.pnpm/sdp@3.2.0/node_modules/sdp/sdp.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/common_shim.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/adapter_factory.js","../node_modules/livekit-client/node_modules/.pnpm/webrtc-adapter@9.0.1/node_modules/webrtc-adapter/src/js/adapter_core.js","../node_modules/livekit-client/src/e2ee/constants.ts","../node_modules/livekit-client/src/e2ee/events.ts","../node_modules/livekit-client/src/e2ee/utils.ts","../node_modules/livekit-client/src/e2ee/KeyProvider.ts","../node_modules/livekit-client/src/room/errors.ts","../node_modules/livekit-client/src/e2ee/errors.ts","../node_modules/livekit-client/src/room/events.ts","../node_modules/livekit-client/node_modules/.pnpm/ts-debounce@4.0.0/node_modules/ts-debounce/dist/src/index.esm.js","../node_modules/livekit-client/src/utils/browserParser.ts","../node_modules/livekit-client/src/room/timers.ts","../node_modules/livekit-client/src/room/track/options.ts","../node_modules/livekit-client/src/room/track/Track.ts","../node_modules/livekit-client/src/room/track/utils.ts","../node_modules/livekit-client/src/utils/cloneDeep.ts","../node_modules/livekit-client/src/room/utils.ts","../node_modules/livekit-client/src/room/DeviceManager.ts","../node_modules/livekit-client/src/room/track/LocalTrack.ts","../node_modules/livekit-client/src/e2ee/E2eeManager.ts","../node_modules/livekit-client/src/utils/AsyncQueue.ts","../node_modules/livekit-client/src/api/SignalClient.ts","../node_modules/livekit-client/src/version.ts","../node_modules/livekit-client/node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js","../node_modules/livekit-client/node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/parser.js","../node_modules/livekit-client/node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js","../node_modules/livekit-client/node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/index.js","../node_modules/livekit-client/src/room/PCTransport.ts","../node_modules/livekit-client/src/room/defaults.ts","../node_modules/livekit-client/src/room/PCTransportManager.ts","../node_modules/livekit-client/src/room/stats.ts","../node_modules/livekit-client/src/room/track/LocalAudioTrack.ts","../node_modules/livekit-client/src/room/participant/publishUtils.ts","../node_modules/livekit-client/src/room/track/LocalVideoTrack.ts","../node_modules/livekit-client/src/room/RTCEngine.ts","../node_modules/livekit-client/src/room/RegionUrlProvider.ts","../node_modules/livekit-client/src/room/rpc.ts","../node_modules/livekit-client/src/room/track/RemoteTrack.ts","../node_modules/livekit-client/src/room/track/RemoteAudioTrack.ts","../node_modules/livekit-client/src/room/track/RemoteVideoTrack.ts","../node_modules/livekit-client/src/room/track/TrackPublication.ts","../node_modules/livekit-client/src/room/track/LocalTrackPublication.ts","../node_modules/livekit-client/src/room/participant/Participant.ts","../node_modules/livekit-client/src/room/Room.ts","../node_modules/livekit-client/src/room/participant/LocalParticipant.ts","../node_modules/livekit-client/src/room/participant/ParticipantTrackPermission.ts","../node_modules/livekit-client/src/room/track/RemoteTrackPublication.ts","../node_modules/livekit-client/src/room/participant/RemoteParticipant.ts","../node_modules/livekit-client/src/connectionHelper/checks/Checker.ts","../node_modules/livekit-client/src/connectionHelper/ConnectionCheck.ts","../node_modules/livekit-client/src/room/track/facingMode.ts","../node_modules/@heygen/streaming-avatar/lib/index.esm.js","components/AvatarComponent.tsx","hooks/useCurrentHeight.js","components/LanguageSelection.tsx","../node_modules/@grafana/faro-core/src/utils/is.ts","../node_modules/@grafana/faro-react/src/dependencies.ts","../node_modules/@grafana/faro-react/src/utils/reactVersion.ts","../node_modules/@grafana/faro-react/src/errorBoundary/FaroErrorBoundary.tsx","../node_modules/@grafana/faro-core/src/utils/noop.ts","../node_modules/@grafana/faro-core/src/internalLogger/const.ts","../node_modules/@grafana/faro-core/src/unpatchedConsole/const.ts","../node_modules/@grafana/faro-core/src/extensions/baseExtension.ts","../node_modules/@grafana/faro-core/src/instrumentations/base.ts","../node_modules/@grafana/faro-core/src/version.ts","../node_modules/@grafana/faro-react/src/router/types.ts","../node_modules/@grafana/faro-core/src/semantic.ts","../node_modules/@grafana/faro-react/src/router/v4v5/activeEvent.ts","../node_modules/@grafana/faro-react/src/router/v4v5/routerDependencies.ts","../node_modules/@grafana/faro-react/src/router/v4v5/FaroRoute.tsx","../node_modules/@grafana/faro-core/src/globalObject/globalObject.ts","../node_modules/@grafana/faro-react/src/router/v4v5/initialize.ts","../node_modules/@grafana/faro-react/src/router/v6/routerDependencies.ts","../node_modules/@grafana/faro-react/src/router/v6/utils.ts","../node_modules/@grafana/faro-react/src/router/v6/FaroRoutes.tsx","../node_modules/@grafana/faro-react/src/router/v6/initialize.ts","../node_modules/@grafana/faro-react/src/profiler/FaroProfiler.tsx","../node_modules/@grafana/faro-core/src/sdk/const.ts","../node_modules/@grafana/faro-core/src/sdk/registerFaro.ts","../node_modules/@grafana/faro-core/src/sdk/internalFaroGlobalObject.ts","../node_modules/@grafana/faro-core/src/sdk/faroGlobalObject.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/const.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/stackFrames/const.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/stackFrames/buildStackFrame.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/stackFrames/getDataFromSafariExtensions.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/stackFrames/getStackFramesFromError.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/getErrorDetails.ts","../node_modules/@grafana/faro-core/src/api/exceptions/const.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/registerOnerror.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/getValueAndTypeFromMessage.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/registerOnunhandledrejection.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/instrumentation.ts","../node_modules/@grafana/faro-web-sdk/node_modules/web-vitals/dist/web-vitals.js","../node_modules/@grafana/faro-web-sdk/src/instrumentations/webVitals/webVitalsBasic.ts","../node_modules/@grafana/faro-web-sdk/node_modules/web-vitals/dist/web-vitals.attribution.js","../node_modules/@grafana/faro-core/src/consts.ts","../node_modules/@grafana/faro-web-sdk/src/utils/webStorage.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/instrumentationConstants.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/webVitals/webVitalsWithAttribution.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/webVitals/instrumentation.ts","../node_modules/@grafana/faro-core/src/utils/date.ts","../node_modules/@grafana/faro-core/src/utils/shortId.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/sampling.ts","../node_modules/@grafana/faro-web-sdk/src/utils/throttle.ts","../node_modules/@grafana/faro-web-sdk/src/utils/json.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/sessionConstants.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/sessionManagerUtils.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/PersistentSessionsManager.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/VolatileSessionManager.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/sessionManager/getSessionManagerByConfig.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/session/instrumentation.ts","../node_modules/@grafana/faro-web-sdk/src/metas/session/createSession.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/view/instrumentation.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/performance/performanceConstants.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/performance/performanceUtils.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/performance/resource.ts","../node_modules/@grafana/faro-core/src/utils/logLevels.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/performance/instrumentation.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/performance/navigation.ts","../node_modules/@grafana/faro-core/src/api/logs/const.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/console/instrumentation.ts","../node_modules/@grafana/faro-web-sdk/src/config/getWebInstrumentations.ts","../node_modules/@grafana/faro-core/src/transports/const.ts","../node_modules/@grafana/faro-core/src/utils/deepEqual.ts","../node_modules/@grafana/faro-core/src/api/exceptions/initialize.ts","../node_modules/@grafana/faro-core/src/api/initialize.ts","../node_modules/@grafana/faro-core/src/api/traces/initialize.ts","../node_modules/@grafana/faro-core/src/api/meta/initialize.ts","../node_modules/@grafana/faro-core/src/api/logs/initialize.ts","../node_modules/@grafana/faro-core/src/api/measurements/initialize.ts","../node_modules/@grafana/faro-core/src/api/events/initialize.ts","../node_modules/@grafana/faro-core/src/internalLogger/createInternalLogger.ts","../node_modules/@grafana/faro-core/src/internalLogger/initialize.ts","../node_modules/@grafana/faro-core/src/transports/batchExecutor.ts","../node_modules/@grafana/faro-core/src/transports/initialize.ts","../node_modules/@grafana/faro-core/src/unpatchedConsole/initialize.ts","../node_modules/@grafana/faro-core/src/initialize.ts","../node_modules/@grafana/faro-core/src/metas/initialize.ts","../node_modules/@grafana/faro-core/src/instrumentations/initialize.ts","../node_modules/@grafana/faro-core/src/metas/registerInitial.ts","../node_modules/@grafana/faro-core/src/utils/sourceMaps.ts","../node_modules/@grafana/faro-core/src/transports/registerInitial.ts","../node_modules/@grafana/faro-core/src/instrumentations/registerInitial.ts","../node_modules/@grafana/faro-core/src/config/const.ts","../node_modules/@grafana/faro-web-sdk/src/instrumentations/errors/stackFrames/parseStacktrace.ts","../node_modules/@grafana/faro-web-sdk/src/metas/browser/meta.ts","../node_modules/@grafana/faro-web-sdk/src/metas/const.ts","../node_modules/@grafana/faro-web-sdk/src/metas/page/meta.ts","../node_modules/@grafana/faro-web-sdk/src/metas/k6/meta.ts","../node_modules/@grafana/faro-core/src/transports/base.ts","../node_modules/@grafana/faro-core/src/transports/utils.ts","../node_modules/@grafana/faro-web-sdk/src/transports/fetch/transport.ts","../node_modules/@grafana/faro-core/src/utils/promiseBuffer.ts","components/wavBlob.js","App.tsx","app/hooks.ts","reportWebVitals.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/@opentelemetry/context-zone-peer-dep/src/ZoneContextManager.ts","../node_modules/@opentelemetry/context-zone-peer-dep/src/util.ts","../node_modules/@opentelemetry/api/src/metrics/NoopMeter.ts","../node_modules/@opentelemetry/api/src/metrics/NoopMeterProvider.ts","../node_modules/@opentelemetry/api/src/api/metrics.ts","../node_modules/@opentelemetry/api/src/metrics-api.ts","../node_modules/@opentelemetry/api-logs/src/platform/browser/globalThis.ts","../node_modules/@opentelemetry/api-logs/src/internal/global-utils.ts","../node_modules/@opentelemetry/api-logs/src/NoopLogger.ts","../node_modules/@opentelemetry/api-logs/src/NoopLoggerProvider.ts","../node_modules/@opentelemetry/api-logs/src/ProxyLogger.ts","../node_modules/@opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../node_modules/@opentelemetry/api-logs/src/api/logs.ts","../node_modules/@opentelemetry/api-logs/src/index.ts","../node_modules/@opentelemetry/api/src/trace/span_kind.ts","../node_modules/@opentelemetry/resources/src/Resource.ts","../node_modules/@opentelemetry/resources/src/platform/browser/default-service-name.ts","../node_modules/@opentelemetry/api/src/trace/status.ts","../node_modules/@opentelemetry/sdk-trace-base/src/Sampler.ts","../node_modules/@opentelemetry/semantic-conventions/src/trace/SemanticAttributes.ts","../node_modules/@opentelemetry/sdk-trace-base/src/Span.ts","../node_modules/@opentelemetry/sdk-trace-base/src/enums.ts","../node_modules/@opentelemetry/sdk-trace-base/src/sampler/AlwaysOffSampler.ts","../node_modules/@opentelemetry/sdk-trace-base/src/sampler/AlwaysOnSampler.ts","../node_modules/@opentelemetry/sdk-trace-base/src/sampler/ParentBasedSampler.ts","../node_modules/@opentelemetry/sdk-trace-base/src/sampler/TraceIdRatioBasedSampler.ts","../node_modules/@opentelemetry/sdk-trace-base/src/config.ts","../node_modules/@opentelemetry/sdk-trace-base/src/platform/browser/RandomIdGenerator.ts","../node_modules/@opentelemetry/sdk-trace-base/src/Tracer.ts","../node_modules/@opentelemetry/sdk-trace-base/src/BasicTracerProvider.ts","../node_modules/@opentelemetry/sdk-trace-base/src/utility.ts","../node_modules/@opentelemetry/sdk-trace-base/src/MultiSpanProcessor.ts","../node_modules/@opentelemetry/sdk-trace-base/src/export/NoopSpanProcessor.ts","../node_modules/@opentelemetry/sdk-trace-base/src/export/BatchSpanProcessorBase.ts","../node_modules/@opentelemetry/sdk-trace-base/src/platform/browser/export/BatchSpanProcessor.ts","../node_modules/@opentelemetry/sdk-trace-web/src/StackContextManager.ts","../node_modules/@opentelemetry/sdk-trace-web/src/WebTracerProvider.ts","../node_modules/@grafana/faro-web-tracing/src/faroTraceExporter.ts","../node_modules/@grafana/faro-web-tracing/src/faroTraceExporter.utils.ts","../node_modules/@opentelemetry/instrumentation/src/utils.ts","../node_modules/@opentelemetry/sdk-trace-web/src/enums/PerformanceTimingNames.ts","../node_modules/@opentelemetry/sdk-trace-web/src/utils.ts","../node_modules/@opentelemetry/instrumentation-fetch/src/enums/AttributeNames.ts","../node_modules/@opentelemetry/instrumentation/src/instrumentation.ts","../node_modules/@opentelemetry/instrumentation/src/platform/browser/instrumentation.ts","../node_modules/@opentelemetry/instrumentation-fetch/src/utils.ts","../node_modules/@opentelemetry/instrumentation-fetch/src/version.ts","../node_modules/@opentelemetry/instrumentation-xml-http-request/src/enums/EventNames.ts","../node_modules/@opentelemetry/instrumentation-fetch/src/fetch.ts","../node_modules/@opentelemetry/instrumentation-xml-http-request/src/utils.ts","../node_modules/@opentelemetry/instrumentation-xml-http-request/src/version.ts","../node_modules/@opentelemetry/instrumentation-xml-http-request/src/enums/AttributeNames.ts","../node_modules/@opentelemetry/instrumentation-xml-http-request/src/xhr.ts","../node_modules/@grafana/faro-web-tracing/src/faroXhrInstrumentation.ts","../node_modules/@grafana/faro-web-tracing/src/instrumentationUtils.ts","../node_modules/@grafana/faro-web-tracing/src/getDefaultOTELInstrumentations.ts","../node_modules/@grafana/faro-web-tracing/src/sampler.ts","../node_modules/@grafana/faro-web-tracing/src/sessionSpanProcessor.ts","../node_modules/@opentelemetry/semantic-conventions/src/experimental_attributes.ts","../node_modules/@grafana/faro-web-tracing/src/instrumentation.ts","../node_modules/@opentelemetry/semantic-conventions/src/stable_attributes.ts","../node_modules/@opentelemetry/instrumentation/src/autoLoader.ts","../node_modules/@opentelemetry/instrumentation/src/autoLoaderUtils.ts","disableLogs.js","../node_modules/@nextui-org/system/dist/chunk-Q66YAGZJ.mjs","../node_modules/@nextui-org/react-utils/dist/chunk-3XT5V4LF.mjs","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/utils.ts","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/useDefaultLocale.ts","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/context.tsx","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/focusWithoutScrolling.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/platform.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/openLink.tsx","../node_modules/@react-aria/overlays/dist/packages/@react-aria/overlays/src/useModal.tsx","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/@nextui-org/system/dist/chunk-MNMJVVXA.mjs","../node_modules/@grafana/faro-web-sdk/src/initialize.ts","../node_modules/@grafana/faro-web-sdk/src/config/makeCoreConfig.ts","../node_modules/@grafana/faro-web-sdk/src/consts.ts","index.tsx","../node_modules/@grafana/faro-react/src/instrumentation.ts","../node_modules/@grafana/faro-react/src/router/initialize.ts"],"sourcesContent":["/*\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\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with ReturnType>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return fn.call(thisArg, ...args);\n }\n\n bind(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\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\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\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 public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\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 public bind(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\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\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\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 */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters));\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\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\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(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\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\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\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\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\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\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map;\n\n constructor(entries?: Map) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\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/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\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\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\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 */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\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\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\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}\n\nclass BaseContext implements Context {\n private _currentContext!: Map;\n\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?: Map) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './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 */\nexport const diag = DiagAPI.instance();\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\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\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 */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\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// Updates to this file should also be replicated to @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.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 */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\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 */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\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\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\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 */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\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\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\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\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\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\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\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\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\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 */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\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\nimport { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\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 public inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\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 public extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\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\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\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 */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\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 */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\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\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\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\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\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 private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\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\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\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 */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\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\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\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 */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\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\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\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\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\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 */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\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\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\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 */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\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\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\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 */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\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 */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\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 */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\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\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\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\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\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\nimport {\n BaggageEntry,\n Context,\n propagation,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: 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 propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\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 */\nimport {\n Baggage,\n BaggageEntryMetadata,\n baggageEntryMetadataFromString,\n} from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\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 += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n const valueProps = entry.split(BAGGAGE_PROPERTIES_SEPARATOR);\n if (valueProps.length <= 0) return;\n const keyPairPart = valueProps.shift();\n if (!keyPairPart) return;\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n const key = decodeURIComponent(\n keyPairPart.substring(0, separatorIndex).trim()\n );\n const value = decodeURIComponent(\n keyPairPart.substring(separatorIndex + 1).trim()\n );\n let metadata;\n if (valueProps.length > 0) {\n metadata = baggageEntryMetadataFromString(\n valueProps.join(BAGGAGE_PROPERTIES_SEPARATOR)\n );\n }\n return { key, value, metadata };\n}\n\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 */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n if (typeof value !== 'string' || value.length === 0) return {};\n return value\n .split(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}\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\nimport { diag, SpanAttributeValue, SpanAttributes } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): SpanAttributes {\n const out: SpanAttributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const [key, val] of Object.entries(attributes)) {\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key.length > 0;\n}\n\nexport function isAttributeValue(val: unknown): val is SpanAttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValue(val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n\n if (!type) {\n if (isValidPrimitiveAttributeValue(element)) {\n type = typeof element;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n if (typeof element === type) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValue(val: unknown): boolean {\n switch (typeof val) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\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\nimport { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\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\nimport { diag, Exception } from '@opentelemetry/api';\nimport { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\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: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\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\nimport * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\nimport { TimeOriginLegacy } from './types';\n\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/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\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}\n\nexport function getTimeOrigin(): number {\n let timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin !== 'number') {\n const perf: TimeOriginLegacy = performance as unknown as TimeOriginLegacy;\n timeOrigin = perf.timing && perf.timing.fetchStart;\n }\n return timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(getTimeOrigin());\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\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 } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\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}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\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\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\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 */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\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 public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\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 public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\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\nfunction intValue(charCode: number): number {\n // 0-9\n if (charCode >= 48 && charCode <= 57) {\n return charCode - 48;\n }\n\n // a-f\n if (charCode >= 97 && charCode <= 102) {\n return charCode - 87;\n }\n\n // A-F\n return charCode - 55;\n}\n\nexport function hexToBinary(hexStr: string): Uint8Array {\n const buf = new Uint8Array(hexStr.length / 2);\n let offset = 0;\n\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\n return buf;\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 */\nimport { IdGenerator } from '../../trace/IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n */\nexport class RandomIdGenerator implements IdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\n\nconst SHARED_CHAR_CODES_ARRAY = Array(32);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(\n null,\n SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)\n );\n };\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\nimport { hexToBinary } from '../../common/hex-to-binary';\n\nexport function hexToBase64(hexStr: string): string {\n return btoa(String.fromCharCode(...hexToBinary(hexStr)));\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\nimport { Context, createContextKey, Span } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\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\nimport { Sampler, SamplingDecision, SamplingResult } from '@opentelemetry/api';\n\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples no traces.\n */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\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\nimport { Sampler, SamplingDecision, SamplingResult } from '@opentelemetry/api';\n\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples all traces.\n */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\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\nimport {\n Context,\n isSpanContextValid,\n Link,\n Sampler,\n SamplingResult,\n SpanAttributes,\n SpanKind,\n TraceFlags,\n trace,\n} from '@opentelemetry/api';\nimport { globalErrorHandler } from '../../common/global-error-handler';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\n\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 */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\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}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\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\nimport {\n Sampler,\n SamplingDecision,\n SamplingResult,\n isValidTraceId,\n} from '@opentelemetry/api';\n\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 */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private _upperBound: number;\n\n constructor(private readonly _ratio: number = 0) {\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\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}\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/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\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}\n\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 *

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 */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\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\nimport { ShimWrapped } from '../common/types';\n\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\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\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock, Clock } from './common/anchored-clock';\nexport {\n isAttributeKey,\n isAttributeValue,\n sanitizeAttributes,\n} from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport {\n ErrorHandler,\n InstrumentationLibrary,\n InstrumentationScope,\n ShimWrapped,\n TimeOriginLegacy,\n} from './common/types';\nexport { hexToBinary } from './common/hex-to-binary';\nexport { ExportResult, ExportResultCode } from './ExportResult';\nimport {\n getKeyPairs,\n serializeKeyPairs,\n parseKeyPairsIntoRecord,\n parsePairKeyValue,\n} from './baggage/utils';\nexport const baggageUtils = {\n getKeyPairs,\n serializeKeyPairs,\n parseKeyPairsIntoRecord,\n parsePairKeyValue,\n};\nexport {\n RandomIdGenerator,\n SDK_INFO,\n _globalThis,\n getEnv,\n getEnvWithoutDefaults,\n hexToBase64,\n otperformance,\n unrefTimer,\n} from './platform';\nexport {\n CompositePropagator,\n CompositePropagatorConfig,\n} from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport { IdGenerator } from './trace/IdGenerator';\nexport {\n RPCMetadata,\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport { AlwaysOffSampler } from './trace/sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './trace/sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './trace/sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './trace/sampler/TraceIdRatioBasedSampler';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport {\n DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n DEFAULT_ENVIRONMENT,\n DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n ENVIRONMENT,\n RAW_ENVIRONMENT,\n parseEnvironment,\n} from './utils/environment';\nexport { merge } from './utils/merge';\nexport { TracesSamplerValues } from './utils/sampling';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { isWrapped } from './utils/wrap';\nexport { BindOnceFuture } from './utils/callback';\nexport { VERSION } from './version';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\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\nimport { context } from '@opentelemetry/api';\nimport { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, (result: ExportResult) => {\n resolve(result);\n });\n });\n });\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\nimport {\n DEFAULT_ENVIRONMENT,\n ENVIRONMENT,\n RAW_ENVIRONMENT,\n parseEnvironment,\n} from '../../utils/environment';\nimport { _globalThis } from './globalThis';\n\n/**\n * Gets the environment variables\n */\nexport function getEnv(): Required {\n const globalEnv = parseEnvironment(\n _globalThis as typeof globalThis & RAW_ENVIRONMENT\n );\n return Object.assign({}, DEFAULT_ENVIRONMENT, globalEnv);\n}\n\nexport function getEnvWithoutDefaults(): ENVIRONMENT {\n return parseEnvironment(_globalThis as typeof globalThis & RAW_ENVIRONMENT);\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// Updates to this file should also be replicated to @opentelemetry/api too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\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\nexport const otperformance = performance;\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\nimport { VERSION } from '../../version';\nimport {\n SEMRESATTRS_TELEMETRY_SDK_NAME,\n SEMRESATTRS_PROCESS_RUNTIME_NAME,\n SEMRESATTRS_TELEMETRY_SDK_LANGUAGE,\n TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [SEMRESATTRS_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [SEMRESATTRS_PROCESS_RUNTIME_NAME]: 'browser',\n [SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n [SEMRESATTRS_TELEMETRY_SDK_VERSION]: VERSION,\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 */\nexport function unrefTimer(_timer: number): void {}\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\nimport {\n Context,\n TextMapGetter,\n TextMapPropagator,\n diag,\n TextMapSetter,\n} from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n 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 }\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: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\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: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\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\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/**\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 */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\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 */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\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\nimport * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\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 */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\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\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) 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: Map, part: string) => {\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 (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\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(\n 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 }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\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\nimport {\n Context,\n isSpanContextValid,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n trace,\n TraceFlags,\n} from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\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(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\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 */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\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]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\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 */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, 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(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\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\nimport { Context, createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\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\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\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\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n constructor(\n private _callback: T,\n private _that: This\n ) {}\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\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\nimport { DiagLogLevel } from '@opentelemetry/api';\nimport { TracesSamplerValues } from './sampling';\n\nconst DEFAULT_LIST_SEPARATOR = ',';\n\n/**\n * Environment interface to define all names\n */\n\nconst ENVIRONMENT_BOOLEAN_KEYS = ['OTEL_SDK_DISABLED'] as const;\n\ntype ENVIRONMENT_BOOLEANS = {\n [K in (typeof ENVIRONMENT_BOOLEAN_KEYS)[number]]?: boolean;\n};\n\nfunction isEnvVarABoolean(key: unknown): key is keyof ENVIRONMENT_BOOLEANS {\n return (\n ENVIRONMENT_BOOLEAN_KEYS.indexOf(key as keyof ENVIRONMENT_BOOLEANS) > -1\n );\n}\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] as const;\n\ntype ENVIRONMENT_NUMBERS = {\n [K in (typeof ENVIRONMENT_NUMBERS_KEYS)[number]]?: number;\n};\n\nfunction isEnvVarANumber(key: unknown): key is keyof ENVIRONMENT_NUMBERS {\n return (\n ENVIRONMENT_NUMBERS_KEYS.indexOf(key as keyof ENVIRONMENT_NUMBERS) > -1\n );\n}\n\nconst ENVIRONMENT_LISTS_KEYS = [\n 'OTEL_NO_PATCH_MODULES',\n 'OTEL_PROPAGATORS',\n 'OTEL_SEMCONV_STABILITY_OPT_IN',\n] as const;\n\ntype ENVIRONMENT_LISTS = {\n [K in (typeof ENVIRONMENT_LISTS_KEYS)[number]]?: string[];\n};\n\nfunction isEnvVarAList(key: unknown): key is keyof ENVIRONMENT_LISTS {\n return ENVIRONMENT_LISTS_KEYS.indexOf(key as keyof ENVIRONMENT_LISTS) > -1;\n}\n\nexport type ENVIRONMENT = {\n CONTAINER_NAME?: string;\n ECS_CONTAINER_METADATA_URI_V4?: string;\n ECS_CONTAINER_METADATA_URI?: string;\n HOSTNAME?: string;\n KUBERNETES_SERVICE_HOST?: string;\n NAMESPACE?: string;\n OTEL_EXPORTER_JAEGER_AGENT_HOST?: string;\n OTEL_EXPORTER_JAEGER_ENDPOINT?: string;\n OTEL_EXPORTER_JAEGER_PASSWORD?: string;\n OTEL_EXPORTER_JAEGER_USER?: string;\n OTEL_EXPORTER_OTLP_ENDPOINT?: string;\n OTEL_EXPORTER_OTLP_TRACES_ENDPOINT?: string;\n OTEL_EXPORTER_OTLP_METRICS_ENDPOINT?: string;\n OTEL_EXPORTER_OTLP_LOGS_ENDPOINT?: string;\n OTEL_EXPORTER_OTLP_HEADERS?: string;\n OTEL_EXPORTER_OTLP_TRACES_HEADERS?: string;\n OTEL_EXPORTER_OTLP_METRICS_HEADERS?: string;\n OTEL_EXPORTER_OTLP_LOGS_HEADERS?: string;\n OTEL_EXPORTER_ZIPKIN_ENDPOINT?: string;\n OTEL_LOG_LEVEL?: DiagLogLevel;\n OTEL_RESOURCE_ATTRIBUTES?: string;\n OTEL_SERVICE_NAME?: string;\n OTEL_TRACES_EXPORTER?: string;\n OTEL_TRACES_SAMPLER_ARG?: string;\n OTEL_TRACES_SAMPLER?: string;\n OTEL_LOGS_EXPORTER?: string;\n OTEL_EXPORTER_OTLP_INSECURE?: string;\n OTEL_EXPORTER_OTLP_TRACES_INSECURE?: string;\n OTEL_EXPORTER_OTLP_METRICS_INSECURE?: string;\n OTEL_EXPORTER_OTLP_LOGS_INSECURE?: string;\n OTEL_EXPORTER_OTLP_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_COMPRESSION?: string;\n OTEL_EXPORTER_OTLP_TRACES_COMPRESSION?: string;\n OTEL_EXPORTER_OTLP_METRICS_COMPRESSION?: string;\n OTEL_EXPORTER_OTLP_LOGS_COMPRESSION?: string;\n OTEL_EXPORTER_OTLP_CLIENT_KEY?: string;\n OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY?: string;\n OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY?: string;\n OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY?: string;\n OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE?: string;\n OTEL_EXPORTER_OTLP_PROTOCOL?: string;\n OTEL_EXPORTER_OTLP_TRACES_PROTOCOL?: string;\n OTEL_EXPORTER_OTLP_METRICS_PROTOCOL?: string;\n OTEL_EXPORTER_OTLP_LOGS_PROTOCOL?: string;\n OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE?: string;\n} & ENVIRONMENT_BOOLEANS &\n ENVIRONMENT_NUMBERS &\n ENVIRONMENT_LISTS;\n\nexport type RAW_ENVIRONMENT = {\n [key: string]: string | number | undefined | string[];\n};\n\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\n\nexport const DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 128;\nexport const DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 128;\n\n/**\n * Default environment variables\n */\nexport const DEFAULT_ENVIRONMENT: Required = {\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: 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: DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_ATTRIBUTE_COUNT_LIMIT: DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: 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:\n DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:\n DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n OTEL_TRACES_EXPORTER: '',\n OTEL_TRACES_SAMPLER: 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/**\n * @param key\n * @param environment\n * @param values\n */\nfunction parseBoolean(\n key: keyof ENVIRONMENT_BOOLEANS,\n environment: ENVIRONMENT,\n values: RAW_ENVIRONMENT\n) {\n if (typeof values[key] === 'undefined') {\n return;\n }\n\n const value = String(values[key]);\n // support case-insensitive \"true\"\n environment[key] = value.toLowerCase() === 'true';\n}\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(\n name: keyof ENVIRONMENT_NUMBERS,\n environment: ENVIRONMENT,\n values: RAW_ENVIRONMENT,\n min = -Infinity,\n max = Infinity\n) {\n if (typeof values[name] !== 'undefined') {\n const value = Number(values[name] as string);\n if (!isNaN(value)) {\n if (value < min) {\n environment[name] = min;\n } else if (value > max) {\n environment[name] = max;\n } else {\n environment[name] = value;\n }\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(\n name: keyof ENVIRONMENT_LISTS,\n output: ENVIRONMENT,\n input: RAW_ENVIRONMENT,\n separator = DEFAULT_LIST_SEPARATOR\n) {\n const givenValue = input[name];\n if (typeof givenValue === 'string') {\n output[name] = givenValue.split(separator).map(v => v.trim());\n }\n}\n\n// The support string -> DiagLogLevel mappings\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\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(\n key: keyof ENVIRONMENT,\n environment: RAW_ENVIRONMENT | ENVIRONMENT,\n values: RAW_ENVIRONMENT\n) {\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/**\n * Parses environment values\n * @param values\n */\nexport function parseEnvironment(values: RAW_ENVIRONMENT): ENVIRONMENT {\n const environment: ENVIRONMENT = {};\n\n for (const env in DEFAULT_ENVIRONMENT) {\n const key = env as keyof ENVIRONMENT;\n\n switch (key) {\n case 'OTEL_LOG_LEVEL':\n setLogLevelFromEnv(key, environment, values);\n break;\n\n default:\n if (isEnvVarABoolean(key)) {\n parseBoolean(key, environment, values);\n } else if (isEnvVarANumber(key)) {\n parseNumber(key, environment, values);\n } else if (isEnvVarAList(key)) {\n parseStringList(key, environment, values);\n } else {\n const value = values[key];\n if (typeof value !== 'undefined' && value !== null) {\n environment[key] = String(value);\n }\n }\n }\n }\n\n return environment;\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/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\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/**\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: Function, transform: any): any {\n return function (arg: any) {\n return func(transform(arg));\n };\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 */\nexport function isPlainObject(value: any) {\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 (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\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: any) {\n return value != null && typeof value == 'object';\n}\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: any) {\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/**\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: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch (e) {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\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: any) {\n return nativeObjectToString.call(value);\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/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\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(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\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 } 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 } 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\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\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\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\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}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n 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 );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\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\nexport enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\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 */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.30.1';\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 */\nimport type {\n IAnyValue,\n IInstrumentationScope,\n IKeyValue,\n IResource,\n} from './internal-types';\nimport { Attributes } from '@opentelemetry/api';\nimport { InstrumentationScope } from '@opentelemetry/core';\nimport { IResource as ISdkResource } from '@opentelemetry/resources';\n\nexport function createResource(resource: ISdkResource): IResource {\n return {\n attributes: toAttributes(resource.attributes),\n droppedAttributesCount: 0,\n };\n}\n\nexport function createInstrumentationScope(\n scope: InstrumentationScope\n): IInstrumentationScope {\n return {\n name: scope.name,\n version: scope.version,\n };\n}\n\nexport function toAttributes(attributes: Attributes): IKeyValue[] {\n return Object.keys(attributes).map(key => toKeyValue(key, attributes[key]));\n}\n\nexport function toKeyValue(key: string, value: unknown): IKeyValue {\n return {\n key: key,\n value: toAnyValue(value),\n };\n}\n\nexport function toAnyValue(value: unknown): IAnyValue {\n const t = typeof value;\n if (t === 'string') return { stringValue: value as string };\n if (t === 'number') {\n if (!Number.isInteger(value)) return { doubleValue: value as number };\n return { intValue: value as number };\n }\n if (t === 'boolean') return { boolValue: value as boolean };\n if (value instanceof Uint8Array) return { bytesValue: value };\n if (Array.isArray(value))\n return { arrayValue: { values: value.map(toAnyValue) } };\n if (t === 'object' && value != null)\n return {\n kvlistValue: {\n values: Object.entries(value as object).map(([k, v]) =>\n toKeyValue(k, v)\n ),\n },\n };\n\n return {};\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\nimport type { OtlpEncodingOptions, Fixed64, LongBits } from './internal-types';\nimport { HrTime } from '@opentelemetry/api';\nimport { hexToBinary, hrTimeToNanoseconds } from '@opentelemetry/core';\n\nexport function hrTimeToNanos(hrTime: HrTime): bigint {\n const NANOSECONDS = BigInt(1_000_000_000);\n return BigInt(hrTime[0]) * NANOSECONDS + BigInt(hrTime[1]);\n}\n\nexport function toLongBits(value: bigint): LongBits {\n const low = Number(BigInt.asUintN(32, value));\n const high = Number(BigInt.asUintN(32, value >> BigInt(32)));\n return { low, high };\n}\n\nexport function encodeAsLongBits(hrTime: HrTime): LongBits {\n const nanos = hrTimeToNanos(hrTime);\n return toLongBits(nanos);\n}\n\nexport function encodeAsString(hrTime: HrTime): string {\n const nanos = hrTimeToNanos(hrTime);\n return nanos.toString();\n}\n\nconst encodeTimestamp =\n typeof BigInt !== 'undefined' ? encodeAsString : hrTimeToNanoseconds;\n\nexport type HrTimeEncodeFunction = (hrTime: HrTime) => Fixed64;\nexport type SpanContextEncodeFunction = (\n spanContext: string\n) => string | Uint8Array;\nexport type OptionalSpanContextEncodeFunction = (\n spanContext: string | undefined\n) => string | Uint8Array | undefined;\n\nexport interface Encoder {\n encodeHrTime: HrTimeEncodeFunction;\n encodeSpanContext: SpanContextEncodeFunction;\n encodeOptionalSpanContext: OptionalSpanContextEncodeFunction;\n}\n\nfunction identity(value: T): T {\n return value;\n}\n\nfunction optionalHexToBinary(str: string | undefined): Uint8Array | undefined {\n if (str === undefined) return undefined;\n return hexToBinary(str);\n}\n\nconst DEFAULT_ENCODER: Encoder = {\n encodeHrTime: encodeAsLongBits,\n encodeSpanContext: hexToBinary,\n encodeOptionalSpanContext: optionalHexToBinary,\n};\n\nexport function getOtlpEncoder(options?: OtlpEncodingOptions): Encoder {\n if (options === undefined) {\n return DEFAULT_ENCODER;\n }\n\n const useLongBits = options.useLongBits ?? true;\n const useHex = options.useHex ?? false;\n return {\n encodeHrTime: useLongBits ? encodeAsLongBits : encodeTimestamp,\n encodeSpanContext: useHex ? identity : hexToBinary,\n encodeOptionalSpanContext: useHex ? identity : optionalHexToBinary,\n };\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\nimport {\n Fixed64,\n IInstrumentationScope,\n IKeyValue,\n IResource,\n} from '../common/internal-types';\n\n/** Properties of an ExportTraceServiceRequest. */\nexport interface IExportTraceServiceRequest {\n /** ExportTraceServiceRequest resourceSpans */\n resourceSpans?: IResourceSpans[];\n}\n\n/** Properties of a ResourceSpans. */\nexport interface IResourceSpans {\n /** ResourceSpans resource */\n resource?: IResource;\n\n /** ResourceSpans scopeSpans */\n scopeSpans: IScopeSpans[];\n\n /** ResourceSpans schemaUrl */\n schemaUrl?: string;\n}\n\n/** Properties of an ScopeSpans. */\nexport interface IScopeSpans {\n /** IScopeSpans scope */\n scope?: IInstrumentationScope;\n\n /** IScopeSpans spans */\n spans?: ISpan[];\n\n /** IScopeSpans schemaUrl */\n schemaUrl?: string | null;\n}\n\n/** Properties of a Span. */\nexport interface ISpan {\n /** Span traceId */\n traceId: string | Uint8Array;\n\n /** Span spanId */\n spanId: string | Uint8Array;\n\n /** Span traceState */\n traceState?: string | null;\n\n /** Span parentSpanId */\n parentSpanId?: string | Uint8Array;\n\n /** Span name */\n name: string;\n\n /** Span kind */\n kind: ESpanKind;\n\n /** Span startTimeUnixNano */\n startTimeUnixNano: Fixed64;\n\n /** Span endTimeUnixNano */\n endTimeUnixNano: Fixed64;\n\n /** Span attributes */\n attributes: IKeyValue[];\n\n /** Span droppedAttributesCount */\n droppedAttributesCount: number;\n\n /** Span events */\n events: IEvent[];\n\n /** Span droppedEventsCount */\n droppedEventsCount: number;\n\n /** Span links */\n links: ILink[];\n\n /** Span droppedLinksCount */\n droppedLinksCount: number;\n\n /** Span status */\n status: IStatus;\n}\n\n/**\n * SpanKind is the type of span. Can be used to specify additional relationships between spans\n * in addition to a parent/child relationship.\n */\nexport enum ESpanKind {\n /** Unspecified. Do NOT use as default. Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED. */\n SPAN_KIND_UNSPECIFIED = 0,\n\n /** Indicates that the span represents an internal operation within an application,\n * as opposed to an operation happening at the boundaries. Default value.\n */\n SPAN_KIND_INTERNAL = 1,\n\n /** Indicates that the span covers server-side handling of an RPC or other\n * remote network request.\n */\n SPAN_KIND_SERVER = 2,\n\n /** Indicates that the span describes a request to some remote service.\n */\n SPAN_KIND_CLIENT = 3,\n\n /** Indicates that the span describes a producer sending a message to a broker.\n * Unlike CLIENT and SERVER, there is often no direct critical path latency relationship\n * between producer and consumer spans. A PRODUCER span ends when the message was accepted\n * by the broker while the logical processing of the message might span a much longer time.\n */\n SPAN_KIND_PRODUCER = 4,\n\n /** Indicates that the span describes consumer receiving a message from a broker.\n * Like the PRODUCER kind, there is often no direct critical path latency relationship\n * between producer and consumer spans.\n */\n SPAN_KIND_CONSUMER = 5,\n}\n\n/** Properties of a Status. */\nexport interface IStatus {\n /** Status message */\n message?: string;\n\n /** Status code */\n code: EStatusCode;\n}\n\n/** StatusCode enum. */\nexport const enum EStatusCode {\n /** The default status. */\n STATUS_CODE_UNSET = 0,\n /** The Span has been evaluated by an Application developers or Operator to have completed successfully. */\n STATUS_CODE_OK = 1,\n /** The Span contains an error. */\n STATUS_CODE_ERROR = 2,\n}\n\n/** Properties of an Event. */\nexport interface IEvent {\n /** Event timeUnixNano */\n timeUnixNano: Fixed64;\n\n /** Event name */\n name: string;\n\n /** Event attributes */\n attributes: IKeyValue[];\n\n /** Event droppedAttributesCount */\n droppedAttributesCount: number;\n}\n\n/** Properties of a Link. */\nexport interface ILink {\n /** Link traceId */\n traceId: string | Uint8Array;\n\n /** Link spanId */\n spanId: string | Uint8Array;\n\n /** Link traceState */\n traceState?: string;\n\n /** Link attributes */\n attributes: IKeyValue[];\n\n /** Link droppedAttributesCount */\n droppedAttributesCount: number;\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 */\nimport type { Link } from '@opentelemetry/api';\nimport { IResource } from '@opentelemetry/resources';\nimport type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base';\nimport type { Encoder } from '../common/utils';\nimport {\n createInstrumentationScope,\n createResource,\n toAttributes,\n} from '../common/internal';\nimport {\n EStatusCode,\n IEvent,\n IExportTraceServiceRequest,\n ILink,\n IResourceSpans,\n IScopeSpans,\n ISpan,\n} from './internal-types';\nimport { OtlpEncodingOptions } from '../common/internal-types';\nimport { getOtlpEncoder } from '../common/utils';\n\nexport function sdkSpanToOtlpSpan(span: ReadableSpan, encoder: Encoder): ISpan {\n const ctx = span.spanContext();\n const status = span.status;\n return {\n traceId: encoder.encodeSpanContext(ctx.traceId),\n spanId: encoder.encodeSpanContext(ctx.spanId),\n parentSpanId: encoder.encodeOptionalSpanContext(span.parentSpanId),\n traceState: ctx.traceState?.serialize(),\n name: span.name,\n // Span kind is offset by 1 because the API does not define a value for unset\n kind: span.kind == null ? 0 : span.kind + 1,\n startTimeUnixNano: encoder.encodeHrTime(span.startTime),\n endTimeUnixNano: encoder.encodeHrTime(span.endTime),\n attributes: toAttributes(span.attributes),\n droppedAttributesCount: span.droppedAttributesCount,\n events: span.events.map(event => toOtlpSpanEvent(event, encoder)),\n droppedEventsCount: span.droppedEventsCount,\n status: {\n // API and proto enums share the same values\n code: status.code as unknown as EStatusCode,\n message: status.message,\n },\n links: span.links.map(link => toOtlpLink(link, encoder)),\n droppedLinksCount: span.droppedLinksCount,\n };\n}\n\nexport function toOtlpLink(link: Link, encoder: Encoder): ILink {\n return {\n attributes: link.attributes ? toAttributes(link.attributes) : [],\n spanId: encoder.encodeSpanContext(link.context.spanId),\n traceId: encoder.encodeSpanContext(link.context.traceId),\n traceState: link.context.traceState?.serialize(),\n droppedAttributesCount: link.droppedAttributesCount || 0,\n };\n}\n\nexport function toOtlpSpanEvent(\n timedEvent: TimedEvent,\n encoder: Encoder\n): IEvent {\n return {\n attributes: timedEvent.attributes\n ? toAttributes(timedEvent.attributes)\n : [],\n name: timedEvent.name,\n timeUnixNano: encoder.encodeHrTime(timedEvent.time),\n droppedAttributesCount: timedEvent.droppedAttributesCount || 0,\n };\n}\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\nexport function createExportTraceServiceRequest(\n spans: ReadableSpan[],\n options?: OtlpEncodingOptions\n): IExportTraceServiceRequest {\n const encoder = getOtlpEncoder(options);\n return {\n resourceSpans: spanRecordsToResourceSpans(spans, encoder),\n };\n}\n\nfunction createResourceMap(readableSpans: ReadableSpan[]) {\n const resourceMap: Map> = new Map();\n for (const record of readableSpans) {\n let ilmMap = resourceMap.get(record.resource);\n\n if (!ilmMap) {\n ilmMap = new Map();\n resourceMap.set(record.resource, ilmMap);\n }\n\n // TODO this is duplicated in basic tracer. Consolidate on a common helper in core\n const instrumentationLibraryKey = `${record.instrumentationLibrary.name}@${\n record.instrumentationLibrary.version || ''\n }:${record.instrumentationLibrary.schemaUrl || ''}`;\n let records = ilmMap.get(instrumentationLibraryKey);\n\n if (!records) {\n records = [];\n ilmMap.set(instrumentationLibraryKey, records);\n }\n\n records.push(record);\n }\n\n return resourceMap;\n}\n\nfunction spanRecordsToResourceSpans(\n readableSpans: ReadableSpan[],\n encoder: Encoder\n): IResourceSpans[] {\n const resourceMap = createResourceMap(readableSpans);\n const out: IResourceSpans[] = [];\n\n const entryIterator = resourceMap.entries();\n let entry = entryIterator.next();\n while (!entry.done) {\n const [resource, ilmMap] = entry.value;\n const scopeResourceSpans: IScopeSpans[] = [];\n const ilmIterator = ilmMap.values();\n let ilmEntry = ilmIterator.next();\n while (!ilmEntry.done) {\n const scopeSpans = ilmEntry.value;\n if (scopeSpans.length > 0) {\n const spans = scopeSpans.map(readableSpan =>\n sdkSpanToOtlpSpan(readableSpan, encoder)\n );\n\n scopeResourceSpans.push({\n scope: createInstrumentationScope(\n scopeSpans[0].instrumentationLibrary\n ),\n spans: spans,\n schemaUrl: scopeSpans[0].instrumentationLibrary.schemaUrl,\n });\n }\n ilmEntry = ilmIterator.next();\n }\n // TODO SDK types don't provide resource schema URL at this time\n const transformedSpans: IResourceSpans = {\n resource: createResource(resource),\n scopeSpans: scopeResourceSpans,\n schemaUrl: undefined,\n };\n\n out.push(transformedSpans);\n entry = entryIterator.next();\n }\n\n return out;\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/**\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: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n\n return res as T;\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\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\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n\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 const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\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 const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\n/**\n * The geographical region the resource is running. Refer to your provider'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 const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\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 "zones" 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 const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\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 const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\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 const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\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 const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\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 const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\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 const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\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 const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\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 const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\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 const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\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 const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\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 const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\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 const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\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 const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\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 const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\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 const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\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 const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\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 const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\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 const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\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 const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\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 const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\n/**\n * The model identifier for the device.\n *\n * Note: It'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 const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\n/**\n * The marketing name for the device model.\n *\n * Note: It'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 const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\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 const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\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 "invoked ARN" 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 const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\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 const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\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 const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It'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 const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\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 const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\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 const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\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 const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\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 const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\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 const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\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 const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\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 const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\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 const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\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 const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\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 const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\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 const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\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 const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\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 const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\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 const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\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 const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\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 const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\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 const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\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 const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\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 const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\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 const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\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 const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\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 const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\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 const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\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 const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\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 const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\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 const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\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 const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\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 const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\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 const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\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 const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\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 const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\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 const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\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 const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\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 const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\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 const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\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 const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\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 const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\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 const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\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 const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\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 const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\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 const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\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 const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\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 const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\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 const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\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 const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\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 const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\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 const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\n /**\n * The geographical region the resource is running. Refer to your provider'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 CLOUD_REGION: 'cloud.region';\n\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 "zones" on Alibaba Cloud and Google Cloud.\n */\n CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\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 CLOUD_PLATFORM: 'cloud.platform';\n\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 AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\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 AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\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 AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\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 AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\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 CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\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 DEVICE_ID: 'device.id';\n\n /**\n * The model identifier for the device.\n *\n * Note: It'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 DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\n /**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n */\n DEVICE_MODEL_NAME: 'device.model.name';\n\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 FAAS_NAME: 'faas.name';\n\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 "invoked ARN" 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 FAAS_ID: 'faas.id';\n\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 FAAS_VERSION: 'faas.version';\n\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 FAAS_INSTANCE: 'faas.instance';\n\n /**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It'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 FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\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 HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\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 OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\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 PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\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 PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\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 PROCESS_COMMAND: 'process.command';\n\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 PROCESS_COMMAND_LINE: 'process.command_line';\n\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 PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\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 SERVICE_NAME: 'service.name';\n\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 SERVICE_NAMESPACE: 'service.namespace';\n\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 SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\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 const SemanticResourceAttributes: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n\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 const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\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 const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\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 const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\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\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\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n\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 const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\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 const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\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 const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\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 const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\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 const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\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 const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\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 const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\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 const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\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 const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\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 const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\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 const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\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 const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\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 const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\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 const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\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 const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\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 const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\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 const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the 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 * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\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 const CloudPlatformValues: 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/* ----------------------------------------------------------------------------------------------------------\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\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\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n\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 const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\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 const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the 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 * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\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 const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n\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 const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\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 const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\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 const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\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 const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\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 const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\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 const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\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 const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\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 const HostArchValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n\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 const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\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 const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\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 const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\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 const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\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 const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\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 const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\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 const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\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 const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\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 const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\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 const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\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 const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\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 const OsTypeValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\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 const TelemetrySdkLanguageValues: 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","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","/**\n *\n * @revision $Id: index.js 2012-03-24 16:21:10 Aleksey $\n * @created 2016-09-24 16:21:10\n * @category Express Helpers\n * @package device-uuid\n * @version 1.0.2\n * @copyright Copyright (c) 2016-2017 - All rights reserved.\n * @license MIT License\n * @author Alexey Gordeyev IK \n * @link http://www.gordejev.lv\n *\n */\nmodule.exports = require('./lib/device-uuid');","/*!\n * device-uuid.js v1.0.4 (https://github.com/biggora/device-uuid/)\n * Copyright 2016-2017 Alexey Gordeyev\n * Licensed under MIT (https://github.com/biggora/device-uuid/blob/master/LICENSE)\n */\n/*global\n screen, window, navigator\n */\n(function (exports) {\n 'use strict';\n\n var BOTS = [\n '\\\\+https:\\\\/\\\\/developers.google.com\\\\/\\\\+\\\\/web\\\\/snippet\\\\/',\n 'googlebot',\n 'baiduspider',\n 'gurujibot',\n 'yandexbot',\n 'slurp',\n 'msnbot',\n 'bingbot',\n 'facebookexternalhit',\n 'linkedinbot',\n 'twitterbot',\n 'slackbot',\n 'telegrambot',\n 'applebot',\n 'pingdom',\n 'tumblr ',\n 'Embedly',\n 'spbot'\n ];\n var IS_BOT_REGEXP = new RegExp('^.*(' + BOTS.join('|') + ').*$');\n\n var DeviceUUID = function (options) {\n options = options ? options : {};\n var defOptions = {\n version: false,\n language: false,\n platform: true,\n os: true,\n pixelDepth: true,\n colorDepth: true,\n resolution: false,\n isAuthoritative: true,\n silkAccelerated: true,\n isKindleFire: true,\n isDesktop: true,\n isMobile: true,\n isTablet: true,\n isWindows: true,\n isLinux: true,\n isLinux64: true,\n isChromeOS: true,\n isMac: true,\n isiPad: true,\n isiPhone: true,\n isiPod: true,\n isAndroid: true,\n isSamsung: true,\n isSmartTV: true,\n isRaspberry: true,\n isBlackberry: true,\n isTouchScreen: true,\n isOpera: false,\n isIE: false,\n isEdge: false,\n isIECompatibilityMode: false,\n isSafari: false,\n isFirefox: false,\n isWebkit: false,\n isChrome: false,\n isKonqueror: false,\n isOmniWeb: false,\n isSeaMonkey: false,\n isFlock: false,\n isAmaya: false,\n isPhantomJS: false,\n isEpiphany: false,\n source: false,\n cpuCores: false\n };\n for (var key in options) {\n if (options.hasOwnProperty(key) && typeof defOptions[key] !== 'undefined') {\n defOptions[key] = options[key];\n }\n }\n this.options = defOptions;\n this.version = '1.0.0';\n this._Versions = {\n Edge: /Edge\\/([\\d\\w\\.\\-]+)/i,\n Firefox: /firefox\\/([\\d\\w\\.\\-]+)/i,\n IE: /msie\\s([\\d\\.]+[\\d])|trident\\/\\d+\\.\\d+;.*[rv:]+(\\d+\\.\\d)/i,\n Chrome: /chrome\\/([\\d\\w\\.\\-]+)/i,\n Chromium: /(?:chromium|crios)\\/([\\d\\w\\.\\-]+)/i,\n Safari: /version\\/([\\d\\w\\.\\-]+)/i,\n Opera: /version\\/([\\d\\w\\.\\-]+)|OPR\\/([\\d\\w\\.\\-]+)/i,\n Ps3: /([\\d\\w\\.\\-]+)\\)\\s*$/i,\n Psp: /([\\d\\w\\.\\-]+)\\)?\\s*$/i,\n Amaya: /amaya\\/([\\d\\w\\.\\-]+)/i,\n SeaMonkey: /seamonkey\\/([\\d\\w\\.\\-]+)/i,\n OmniWeb: /omniweb\\/v([\\d\\w\\.\\-]+)/i,\n Flock: /flock\\/([\\d\\w\\.\\-]+)/i,\n Epiphany: /epiphany\\/([\\d\\w\\.\\-]+)/i,\n WinJs: /msapphost\\/([\\d\\w\\.\\-]+)/i,\n PhantomJS: /phantomjs\\/([\\d\\w\\.\\-]+)/i,\n UC: /UCBrowser\\/([\\d\\w\\.]+)/i\n };\n this._Browsers = {\n Edge: /edge/i,\n Amaya: /amaya/i,\n Konqueror: /konqueror/i,\n Epiphany: /epiphany/i,\n SeaMonkey: /seamonkey/i,\n Flock: /flock/i,\n OmniWeb: /omniweb/i,\n Chromium: /chromium|crios/i,\n Chrome: /chrome/i,\n Safari: /safari/i,\n IE: /msie|trident/i,\n Opera: /opera|OPR/i,\n PS3: /playstation 3/i,\n PSP: /playstation portable/i,\n Firefox: /firefox/i,\n WinJs: /msapphost/i,\n PhantomJS: /phantomjs/i,\n UC: /UCBrowser/i\n };\n this._OS = {\n Windows10: /windows nt 10\\.0/i,\n Windows81: /windows nt 6\\.3/i,\n Windows8: /windows nt 6\\.2/i,\n Windows7: /windows nt 6\\.1/i,\n UnknownWindows: /windows nt 6\\.\\d+/i,\n WindowsVista: /windows nt 6\\.0/i,\n Windows2003: /windows nt 5\\.2/i,\n WindowsXP: /windows nt 5\\.1/i,\n Windows2000: /windows nt 5\\.0/i,\n WindowsPhone8: /windows phone 8\\./,\n OSXCheetah: /os x 10[._]0/i,\n OSXPuma: /os x 10[._]1(\\D|$)/i,\n OSXJaguar: /os x 10[._]2/i,\n OSXPanther: /os x 10[._]3/i,\n OSXTiger: /os x 10[._]4/i,\n OSXLeopard: /os x 10[._]5/i,\n OSXSnowLeopard: /os x 10[._]6/i,\n OSXLion: /os x 10[._]7/i,\n OSXMountainLion: /os x 10[._]8/i,\n OSXMavericks: /os x 10[._]9/i,\n OSXYosemite: /os x 10[._]10/i,\n OSXElCapitan: /os x 10[._]11/i,\n OSXSierra: /os x 10[._]12/i,\n Mac: /os x/i,\n Linux: /linux/i,\n Linux64: /linux x86_64/i,\n ChromeOS: /cros/i,\n Wii: /wii/i,\n PS3: /playstation 3/i,\n PSP: /playstation portable/i,\n iPad: /\\(iPad.*os (\\d+)[._](\\d+)/i,\n iPhone: /\\(iPhone.*os (\\d+)[._](\\d+)/i,\n Bada: /Bada\\/(\\d+)\\.(\\d+)/i,\n Curl: /curl\\/(\\d+)\\.(\\d+)\\.(\\d+)/i\n };\n this._Platform = {\n Windows: /windows nt/i,\n WindowsPhone: /windows phone/i,\n Mac: /macintosh/i,\n Linux: /linux/i,\n Wii: /wii/i,\n Playstation: /playstation/i,\n iPad: /ipad/i,\n iPod: /ipod/i,\n iPhone: /iphone/i,\n Android: /android/i,\n Blackberry: /blackberry/i,\n Samsung: /samsung/i,\n Curl: /curl/i\n };\n\n this.DefaultAgent = {\n isAuthoritative: true,\n isMobile: false,\n isTablet: false,\n isiPad: false,\n isiPod: false,\n isiPhone: false,\n isAndroid: false,\n isBlackberry: false,\n isOpera: false,\n isIE: false,\n isEdge: false,\n isIECompatibilityMode: false,\n isSafari: false,\n isFirefox: false,\n isWebkit: false,\n isChrome: false,\n isKonqueror: false,\n isOmniWeb: false,\n isSeaMonkey: false,\n isFlock: false,\n isAmaya: false,\n isPhantomJS: false,\n isEpiphany: false,\n isDesktop: false,\n isWindows: false,\n isLinux: false,\n isLinux64: false,\n isMac: false,\n isChromeOS: false,\n isBada: false,\n isSamsung: false,\n isRaspberry: false,\n isBot: false,\n isCurl: false,\n isAndroidTablet: false,\n isWinJs: false,\n isKindleFire: false,\n isSilk: false,\n isCaptive: false,\n isSmartTV: false,\n isUC: false,\n isTouchScreen: false,\n silkAccelerated: false,\n colorDepth: -1,\n pixelDepth: -1,\n resolution: [],\n cpuCores: -1,\n language: 'unknown',\n browser: 'unknown',\n version: 'unknown',\n os: 'unknown',\n platform: 'unknown',\n geoIp: {},\n source: '',\n hashInt: function (string) {\n var hash = 0, i, chr, len;\n if (string.length === 0) { return hash; }\n for (i = 0, len = string.length; i < len; i++) {\n chr = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return hash;\n },\n hashMD5: function (string) {\n function rotateLeft(lValue, iShiftBits) {\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\n }\n\n function addUnsigned(lX, lY) {\n var lX4, lY4, lX8, lY8, lResult;\n lX8 = (lX & 0x80000000);\n lY8 = (lY & 0x80000000);\n lX4 = (lX & 0x40000000);\n lY4 = (lY & 0x40000000);\n lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\n\n if (lX4 & lY4) {\n return (lResult ^ 0x80000000 ^ lX8 ^ lY8);\n }\n if (lX4 | lY4) {\n if (lResult & 0x40000000) {\n return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\n } else {\n return (lResult ^ 0x40000000 ^ lX8 ^ lY8);\n }\n } else {\n return (lResult ^ lX8 ^ lY8);\n }\n }\n\n function gF(x, y, z) {\n return (x & y) | ((~x) & z);\n }\n\n function gG(x, y, z) {\n return (x & z) | (y & (~z));\n }\n\n function gH(x, y, z) {\n return (x ^ y ^ z);\n }\n\n function gI(x, y, z) {\n return (y ^ (x | (~z)));\n }\n\n function gFF(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(gF(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function gGG(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(gG(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function gHH(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(gH(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function gII(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(gI(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function convertToWordArray(string) {\n var lWordCount;\n var lMessageLength = string.length;\n var lNumberOfWordsTemp1 = lMessageLength + 8;\n var lNumberOfWordsTemp2 = (lNumberOfWordsTemp1 - (lNumberOfWordsTemp1 % 64)) / 64;\n var lNumberOfWords = (lNumberOfWordsTemp2 + 1) * 16;\n var lWordArray = new Array(lNumberOfWords - 1);\n var lBytePosition = 0;\n var lByteCount = 0;\n\n while (lByteCount < lMessageLength) {\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\n lBytePosition = (lByteCount % 4) * 8;\n lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));\n lByteCount++;\n }\n\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\n lBytePosition = (lByteCount % 4) * 8;\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n return lWordArray;\n }\n\n function wordToHex(lValue) {\n var wordToHexValue = '', wordToHexValueTemp = '', lByte, lCount;\n for (lCount = 0; lCount <= 3; lCount++) {\n lByte = (lValue >>> (lCount * 8)) & 255;\n wordToHexValueTemp = '0' + lByte.toString(16);\n wordToHexValue = wordToHexValue + wordToHexValueTemp.substr(wordToHexValueTemp.length - 2, 2);\n }\n return wordToHexValue;\n }\n\n function utf8Encode(string) {\n string = string.replace(/\\r\\n/g, '\\n');\n var utftext = '';\n\n for (var n = 0; n < string.length; n++) {\n var c = string.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n } else if ((c > 127) && (c < 2048)) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n } else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n }\n\n var x = [];\n var k, AA, BB, CC, DD, a, b, c, d;\n var S11 = 7, S12 = 12, S13 = 17, S14 = 22;\n var S21 = 5, S22 = 9, S23 = 14, S24 = 20;\n var S31 = 4, S32 = 11, S33 = 16, S34 = 23;\n var S41 = 6, S42 = 10, S43 = 15, S44 = 21;\n string = utf8Encode(string);\n x = convertToWordArray(string);\n a = 0x67452301;\n b = 0xEFCDAB89;\n c = 0x98BADCFE;\n d = 0x10325476;\n\n for (k = 0; k < x.length; k += 16) {\n AA = a;\n BB = b;\n CC = c;\n DD = d;\n a = gFF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\n d = gFF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\n c = gFF(c, d, a, b, x[k + 2], S13, 0x242070DB);\n b = gFF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\n a = gFF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\n d = gFF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\n c = gFF(c, d, a, b, x[k + 6], S13, 0xA8304613);\n b = gFF(b, c, d, a, x[k + 7], S14, 0xFD469501);\n a = gFF(a, b, c, d, x[k + 8], S11, 0x698098D8);\n d = gFF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\n c = gFF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\n b = gFF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\n a = gFF(a, b, c, d, x[k + 12], S11, 0x6B901122);\n d = gFF(d, a, b, c, x[k + 13], S12, 0xFD987193);\n c = gFF(c, d, a, b, x[k + 14], S13, 0xA679438E);\n b = gFF(b, c, d, a, x[k + 15], S14, 0x49B40821);\n a = gGG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\n d = gGG(d, a, b, c, x[k + 6], S22, 0xC040B340);\n c = gGG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\n b = gGG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\n a = gGG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\n d = gGG(d, a, b, c, x[k + 10], S22, 0x2441453);\n c = gGG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\n b = gGG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\n a = gGG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\n d = gGG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\n c = gGG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\n b = gGG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\n a = gGG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\n d = gGG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\n c = gGG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\n b = gGG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\n a = gHH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\n d = gHH(d, a, b, c, x[k + 8], S32, 0x8771F681);\n c = gHH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\n b = gHH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\n a = gHH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\n d = gHH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\n c = gHH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\n b = gHH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\n a = gHH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\n d = gHH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\n c = gHH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\n b = gHH(b, c, d, a, x[k + 6], S34, 0x4881D05);\n a = gHH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\n d = gHH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\n c = gHH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\n b = gHH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\n a = gII(a, b, c, d, x[k + 0], S41, 0xF4292244);\n d = gII(d, a, b, c, x[k + 7], S42, 0x432AFF97);\n c = gII(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\n b = gII(b, c, d, a, x[k + 5], S44, 0xFC93A039);\n a = gII(a, b, c, d, x[k + 12], S41, 0x655B59C3);\n d = gII(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\n c = gII(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\n b = gII(b, c, d, a, x[k + 1], S44, 0x85845DD1);\n a = gII(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\n d = gII(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\n c = gII(c, d, a, b, x[k + 6], S43, 0xA3014314);\n b = gII(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\n a = gII(a, b, c, d, x[k + 4], S41, 0xF7537E82);\n d = gII(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\n c = gII(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\n b = gII(b, c, d, a, x[k + 9], S44, 0xEB86D391);\n a = addUnsigned(a, AA);\n b = addUnsigned(b, BB);\n c = addUnsigned(c, CC);\n d = addUnsigned(d, DD);\n }\n var temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\n return temp.toLowerCase();\n }\n };\n\n this.Agent = {};\n\n this.getBrowser = function (string) {\n switch (true) {\n case this._Browsers.Edge.test(string):\n this.Agent.isEdge = true;\n return 'Edge';\n case this._Browsers.PhantomJS.test(string):\n this.Agent.isPhantomJS = true;\n return 'PhantomJS';\n case this._Browsers.Konqueror.test(string):\n this.Agent.isKonqueror = true;\n return 'Konqueror';\n case this._Browsers.Amaya.test(string):\n this.Agent.isAmaya = true;\n return 'Amaya';\n case this._Browsers.Epiphany.test(string):\n this.Agent.isEpiphany = true;\n return 'Epiphany';\n case this._Browsers.SeaMonkey.test(string):\n this.Agent.isSeaMonkey = true;\n return 'SeaMonkey';\n case this._Browsers.Flock.test(string):\n this.Agent.isFlock = true;\n return 'Flock';\n case this._Browsers.OmniWeb.test(string):\n this.Agent.isOmniWeb = true;\n return 'OmniWeb';\n case this._Browsers.Opera.test(string):\n this.Agent.isOpera = true;\n return 'Opera';\n case this._Browsers.Chromium.test(string):\n this.Agent.isChrome = true;\n return 'Chromium';\n case this._Browsers.Chrome.test(string):\n this.Agent.isChrome = true;\n return 'Chrome';\n case this._Browsers.Safari.test(string):\n this.Agent.isSafari = true;\n return 'Safari';\n case this._Browsers.WinJs.test(string):\n this.Agent.isWinJs = true;\n return 'WinJs';\n case this._Browsers.IE.test(string):\n this.Agent.isIE = true;\n return 'IE';\n case this._Browsers.PS3.test(string):\n return 'ps3';\n case this._Browsers.PSP.test(string):\n return 'psp';\n case this._Browsers.Firefox.test(string):\n this.Agent.isFirefox = true;\n return 'Firefox';\n case this._Browsers.UC.test(string):\n this.Agent.isUC = true;\n return 'UCBrowser';\n default:\n // If the UA does not start with Mozilla guess the user agent.\n if (string.indexOf('Mozilla') !== 0 && /^([\\d\\w\\-\\.]+)\\/[\\d\\w\\.\\-]+/i.test(string)) {\n this.Agent.isAuthoritative = false;\n return RegExp.$1;\n }\n return 'unknown';\n }\n };\n\n this.getBrowserVersion = function (string) {\n var regex;\n switch (this.Agent.browser) {\n case 'Edge':\n if (this._Versions.Edge.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'PhantomJS':\n if (this._Versions.PhantomJS.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Chrome':\n if (this._Versions.Chrome.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Chromium':\n if (this._Versions.Chromium.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Safari':\n if (this._Versions.Safari.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Opera':\n if (this._Versions.Opera.test(string)) {\n return RegExp.$1 ? RegExp.$1 : RegExp.$2;\n }\n break;\n case 'Firefox':\n if (this._Versions.Firefox.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'WinJs':\n if (this._Versions.WinJs.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'IE':\n if (this._Versions.IE.test(string)) {\n return RegExp.$2 ? RegExp.$2 : RegExp.$1;\n }\n break;\n case 'ps3':\n if (this._Versions.Ps3.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'psp':\n if (this._Versions.Psp.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Amaya':\n if (this._Versions.Amaya.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Epiphany':\n if (this._Versions.Epiphany.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'SeaMonkey':\n if (this._Versions.SeaMonkey.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'Flock':\n if (this._Versions.Flock.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'OmniWeb':\n if (this._Versions.OmniWeb.test(string)) {\n return RegExp.$1;\n }\n break;\n case 'UCBrowser':\n if (this._Versions.UC.test(string)) {\n return RegExp.$1;\n }\n break;\n default:\n if (this.Agent.browser !== 'unknown') {\n regex = new RegExp(this.Agent.browser + '[\\\\/ ]([\\\\d\\\\w\\\\.\\\\-]+)', 'i');\n if (regex.test(string)) {\n return RegExp.$1;\n }\n }\n }\n };\n\n this.getOS = function (string) {\n switch (true) {\n case this._OS.WindowsVista.test(string):\n this.Agent.isWindows = true;\n return 'Windows Vista';\n case this._OS.Windows7.test(string):\n this.Agent.isWindows = true;\n return 'Windows 7';\n case this._OS.Windows8.test(string):\n this.Agent.isWindows = true;\n return 'Windows 8';\n case this._OS.Windows81.test(string):\n this.Agent.isWindows = true;\n return 'Windows 8.1';\n case this._OS.Windows10.test(string):\n this.Agent.isWindows = true;\n return 'Windows 10.0';\n case this._OS.Windows2003.test(string):\n this.Agent.isWindows = true;\n return 'Windows 2003';\n case this._OS.WindowsXP.test(string):\n this.Agent.isWindows = true;\n return 'Windows XP';\n case this._OS.Windows2000.test(string):\n this.Agent.isWindows = true;\n return 'Windows 2000';\n case this._OS.WindowsPhone8.test(string):\n return 'Windows Phone 8';\n case this._OS.Linux64.test(string):\n this.Agent.isLinux = true;\n this.Agent.isLinux64 = true;\n return 'Linux 64';\n case this._OS.Linux.test(string):\n this.Agent.isLinux = true;\n return 'Linux';\n case this._OS.ChromeOS.test(string):\n this.Agent.isChromeOS = true;\n return 'Chrome OS';\n case this._OS.Wii.test(string):\n return 'Wii';\n case this._OS.PS3.test(string):\n return 'Playstation';\n case this._OS.PSP.test(string):\n return 'Playstation';\n case this._OS.OSXCheetah.test(string):\n this.Agent.isMac = true;\n return 'OS X Cheetah';\n case this._OS.OSXPuma.test(string):\n this.Agent.isMac = true;\n return 'OS X Puma';\n case this._OS.OSXJaguar.test(string):\n this.Agent.isMac = true;\n return 'OS X Jaguar';\n case this._OS.OSXPanther.test(string):\n this.Agent.isMac = true;\n return 'OS X Panther';\n case this._OS.OSXTiger.test(string):\n this.Agent.isMac = true;\n return 'OS X Tiger';\n case this._OS.OSXLeopard.test(string):\n this.Agent.isMac = true;\n return 'OS X Leopard';\n case this._OS.OSXSnowLeopard.test(string):\n this.Agent.isMac = true;\n return 'OS X Snow Leopard';\n case this._OS.OSXLion.test(string):\n this.Agent.isMac = true;\n return 'OS X Lion';\n case this._OS.OSXMountainLion.test(string):\n this.Agent.isMac = true;\n return 'OS X Mountain Lion';\n case this._OS.OSXMavericks.test(string):\n this.Agent.isMac = true;\n return 'OS X Mavericks';\n case this._OS.OSXYosemite.test(string):\n this.Agent.isMac = true;\n return 'OS X Yosemite';\n case this._OS.OSXElCapitan.test(string):\n this.Agent.isMac = true;\n return 'OS X El Capitan';\n case this._OS.OSXSierra.test(string):\n this.Agent.isMac = true;\n return 'macOS Sierra';\n case this._OS.Mac.test(string):\n this.Agent.isMac = true;\n return 'OS X';\n case this._OS.iPad.test(string):\n this.Agent.isiPad = true;\n return string.match(this._OS.iPad)[0].replace('_', '.');\n case this._OS.iPhone.test(string):\n this.Agent.isiPhone = true;\n return string.match(this._OS.iPhone)[0].replace('_', '.');\n case this._OS.Bada.test(string):\n this.Agent.isBada = true;\n return 'Bada';\n case this._OS.Curl.test(string):\n this.Agent.isCurl = true;\n return 'Curl';\n default:\n return 'unknown';\n }\n };\n\n this.getPlatform = function (string) {\n switch (true) {\n case this._Platform.Windows.test(string):\n return 'Microsoft Windows';\n case this._Platform.WindowsPhone.test(string):\n this.Agent.isWindowsPhone = true;\n return 'Microsoft Windows Phone';\n case this._Platform.Mac.test(string):\n return 'Apple Mac';\n case this._Platform.Curl.test(string):\n return 'Curl';\n case this._Platform.Android.test(string):\n this.Agent.isAndroid = true;\n return 'Android';\n case this._Platform.Blackberry.test(string):\n this.Agent.isBlackberry = true;\n return 'Blackberry';\n case this._Platform.Linux.test(string):\n return 'Linux';\n case this._Platform.Wii.test(string):\n return 'Wii';\n case this._Platform.Playstation.test(string):\n return 'Playstation';\n case this._Platform.iPad.test(string):\n this.Agent.isiPad = true;\n return 'iPad';\n case this._Platform.iPod.test(string):\n this.Agent.isiPod = true;\n return 'iPod';\n case this._Platform.iPhone.test(string):\n this.Agent.isiPhone = true;\n return 'iPhone';\n case this._Platform.Samsung.test(string):\n this.Agent.isiSamsung = true;\n return 'Samsung';\n default:\n return 'unknown';\n }\n };\n\n this.testCompatibilityMode = function () {\n var ua = this;\n if (this.Agent.isIE) {\n if (/Trident\\/(\\d)\\.0/i.test(ua.Agent.source)) {\n var tridentVersion = parseInt(RegExp.$1, 10);\n var version = parseInt(ua.Agent.version, 10);\n if (version === 7 && tridentVersion === 7) {\n ua.Agent.isIECompatibilityMode = true;\n ua.Agent.version = 11.0;\n }\n\n if (version === 7 && tridentVersion === 6) {\n ua.Agent.isIECompatibilityMode = true;\n ua.Agent.version = 10.0;\n }\n\n if (version === 7 && tridentVersion === 5) {\n ua.Agent.isIECompatibilityMode = true;\n ua.Agent.version = 9.0;\n }\n\n if (version === 7 && tridentVersion === 4) {\n ua.Agent.isIECompatibilityMode = true;\n ua.Agent.version = 8.0;\n }\n }\n }\n };\n\n this.testSilk = function () {\n var ua = this;\n switch (true) {\n case new RegExp('silk', 'gi').test(ua.Agent.source):\n this.Agent.isSilk = true;\n break;\n default:\n }\n\n if (/Silk-Accelerated=true/gi.test(ua.Agent.source)) {\n this.Agent.SilkAccelerated = true;\n }\n return this.Agent.isSilk ? 'Silk' : false;\n };\n\n this.testKindleFire = function () {\n var ua = this;\n switch (true) {\n case /KFOT/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire';\n case /KFTT/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HD';\n case /KFJWI/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HD 8.9';\n case /KFJWA/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HD 8.9 4G';\n case /KFSOWI/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HD 7';\n case /KFTHWI/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HDX 7';\n case /KFTHWA/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HDX 7 4G';\n case /KFAPWI/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HDX 8.9';\n case /KFAPWA/gi.test(ua.Agent.source):\n this.Agent.isKindleFire = true;\n return 'Kindle Fire HDX 8.9 4G';\n default:\n return false;\n }\n };\n\n this.testCaptiveNetwork = function () {\n var ua = this;\n switch (true) {\n case /CaptiveNetwork/gi.test(ua.Agent.source):\n ua.Agent.isCaptive = true;\n ua.Agent.isMac = true;\n ua.Agent.platform = 'Apple Mac';\n return 'CaptiveNetwork';\n default:\n return false;\n }\n };\n\n this.testMobile = function testMobile() {\n var ua = this;\n switch (true) {\n case ua.Agent.isWindows:\n case ua.Agent.isLinux:\n case ua.Agent.isMac:\n case ua.Agent.isChromeOS:\n ua.Agent.isDesktop = true;\n break;\n case ua.Agent.isAndroid:\n case ua.Agent.isSamsung:\n ua.Agent.isMobile = true;\n ua.Agent.isDesktop = false;\n break;\n default:\n }\n switch (true) {\n case ua.Agent.isiPad:\n case ua.Agent.isiPod:\n case ua.Agent.isiPhone:\n case ua.Agent.isBada:\n case ua.Agent.isBlackberry:\n case ua.Agent.isAndroid:\n case ua.Agent.isWindowsPhone:\n ua.Agent.isMobile = true;\n ua.Agent.isDesktop = false;\n break;\n default:\n }\n if (/mobile/i.test(ua.Agent.source)) {\n ua.Agent.isMobile = true;\n ua.Agent.isDesktop = false;\n }\n };\n\n this.testTablet = function testTablet() {\n var ua = this;\n switch (true) {\n case ua.Agent.isiPad:\n case ua.Agent.isAndroidTablet:\n case ua.Agent.isKindleFire:\n ua.Agent.isTablet = true;\n break;\n }\n if (/tablet/i.test(ua.Agent.source)) {\n ua.Agent.isTablet = true;\n }\n };\n\n this.testNginxGeoIP = function testNginxGeoIP(headers) {\n var ua = this;\n Object.keys(headers).forEach(function (key) {\n if (/^GEOIP/i.test(key)) {\n ua.Agent.geoIp[key] = headers[key];\n }\n });\n };\n\n this.testBot = function testBot() {\n var ua = this;\n var isBot = IS_BOT_REGEXP.exec(ua.Agent.source.toLowerCase());\n if (isBot) {\n ua.Agent.isBot = isBot[1];\n } else if (!ua.Agent.isAuthoritative) {\n // Test unauthoritative parse for `bot` in UA to flag for bot\n ua.Agent.isBot = /bot/i.test(ua.Agent.source);\n }\n };\n\n this.testSmartTV = function testBot() {\n var ua = this;\n var isSmartTV = new RegExp('smart-tv|smarttv|googletv|appletv|hbbtv|pov_tv|netcast.tv', 'gi').exec(ua.Agent.source.toLowerCase());\n if (isSmartTV) {\n ua.Agent.isSmartTV = isSmartTV[1];\n }\n };\n\n this.testAndroidTablet = function testAndroidTablet() {\n var ua = this;\n if (ua.Agent.isAndroid && !/mobile/i.test(ua.Agent.source)) {\n ua.Agent.isAndroidTablet = true;\n }\n };\n\n this.testTouchSupport = function () {\n var ua = this;\n ua.Agent.isTouchScreen = (('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0));\n };\n\n this.getLaguage = function () {\n var ua = this;\n ua.Agent.language = (navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || '').toLowerCase();\n };\n\n this.getColorDepth = function () {\n var ua = this;\n ua.Agent.colorDepth = screen.colorDepth || -1;\n };\n\n this.getScreenResolution = function () {\n var ua = this;\n ua.Agent.resolution = [screen.availWidth, screen.availHeight];\n };\n\n this.getPixelDepth = function () {\n var ua = this;\n ua.Agent.pixelDepth = screen.pixelDepth || -1;\n };\n\n this.getCPU = function () {\n var ua = this;\n ua.Agent.cpuCores = navigator.hardwareConcurrency || -1;\n };\n\n this.reset = function reset() {\n var ua = this;\n for (var key in ua.DefaultAgent) {\n if (ua.DefaultAgent.hasOwnProperty(key)) {\n ua.Agent[key] = ua.DefaultAgent[key];\n }\n }\n return ua;\n };\n\n this.parse = function get(source) {\n source = source || navigator.userAgent;\n var ua = new DeviceUUID();\n ua.Agent.source = source.replace(/^\\s*/, '').replace(/\\s*$/, '');\n ua.Agent.os = ua.getOS(ua.Agent.source);\n ua.Agent.platform = ua.getPlatform(ua.Agent.source);\n ua.Agent.browser = ua.getBrowser(ua.Agent.source);\n ua.Agent.version = ua.getBrowserVersion(ua.Agent.source);\n ua.testBot();\n ua.testSmartTV();\n ua.testMobile();\n ua.testAndroidTablet();\n ua.testTablet();\n ua.testCompatibilityMode();\n ua.testSilk();\n ua.testKindleFire();\n ua.testCaptiveNetwork();\n ua.testTouchSupport();\n ua.getLaguage();\n ua.getColorDepth();\n ua.getPixelDepth();\n ua.getScreenResolution();\n ua.getCPU();\n return ua.Agent;\n };\n\n this.get = function (customData) {\n var pref = 'a', du = this.parse();\n var dua = [];\n for (var key in this.options) {\n if (this.options.hasOwnProperty(key) && this.options[key] === true) {\n dua.push(du[key]);\n }\n }\n if (customData) {\n dua.push(customData);\n }\n if (!this.options.resolution && du.isMobile) {\n dua.push(du.resolution);\n }\n // 8, 9, a, b\n pref = 'b';\n var tmpUuid = du.hashMD5(dua.join(':'));\n var uuid = [\n tmpUuid.slice(0,8),\n tmpUuid.slice(8,12),\n '4' + tmpUuid.slice(12,15),\n pref + tmpUuid.slice(15,18),\n tmpUuid.slice(20)\n ];\n return uuid.join('-');\n };\n\n this.Agent = this.DefaultAgent;\n return this;\n };\n\n exports.DeviceUUID = DeviceUUID;\n return new DeviceUUID(navigator.userAgent);\n\n})(this);\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","// full library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index\");\n","\"use strict\";\nmodule.exports = common;\n\nvar commonRe = /\\/|\\./;\n\n/**\n * Provides common type definitions.\n * Can also be used to provide additional google types or your own custom types.\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\n * @param {Object.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\n * @returns {undefined}\n * @property {INamespace} google/protobuf/any.proto Any\n * @property {INamespace} google/protobuf/duration.proto Duration\n * @property {INamespace} google/protobuf/empty.proto Empty\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\n * @example\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\n * protobuf.common(\"descriptor\", descriptorJson);\n *\n * // manually provides a custom definition (uses my.foo namespace)\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\n */\nfunction common(name, json) {\n if (!commonRe.test(name)) {\n name = \"google/protobuf/\" + name + \".proto\";\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\n }\n common[name] = json;\n}\n\n// Not provided because of limited use (feel free to discuss or to provide yourself):\n//\n// google/protobuf/descriptor.proto\n// google/protobuf/source_context.proto\n// google/protobuf/type.proto\n//\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\n// the repository or package within the google/protobuf directory.\n\ncommon(\"any\", {\n\n /**\n * Properties of a google.protobuf.Any message.\n * @interface IAny\n * @type {Object}\n * @property {string} [typeUrl]\n * @property {Uint8Array} [bytes]\n * @memberof common\n */\n Any: {\n fields: {\n type_url: {\n type: \"string\",\n id: 1\n },\n value: {\n type: \"bytes\",\n id: 2\n }\n }\n }\n});\n\nvar timeType;\n\ncommon(\"duration\", {\n\n /**\n * Properties of a google.protobuf.Duration message.\n * @interface IDuration\n * @type {Object}\n * @property {number|Long} [seconds]\n * @property {number} [nanos]\n * @memberof common\n */\n Duration: timeType = {\n fields: {\n seconds: {\n type: \"int64\",\n id: 1\n },\n nanos: {\n type: \"int32\",\n id: 2\n }\n }\n }\n});\n\ncommon(\"timestamp\", {\n\n /**\n * Properties of a google.protobuf.Timestamp message.\n * @interface ITimestamp\n * @type {Object}\n * @property {number|Long} [seconds]\n * @property {number} [nanos]\n * @memberof common\n */\n Timestamp: timeType\n});\n\ncommon(\"empty\", {\n\n /**\n * Properties of a google.protobuf.Empty message.\n * @interface IEmpty\n * @memberof common\n */\n Empty: {\n fields: {}\n }\n});\n\ncommon(\"struct\", {\n\n /**\n * Properties of a google.protobuf.Struct message.\n * @interface IStruct\n * @type {Object}\n * @property {Object.} [fields]\n * @memberof common\n */\n Struct: {\n fields: {\n fields: {\n keyType: \"string\",\n type: \"Value\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Value message.\n * @interface IValue\n * @type {Object}\n * @property {string} [kind]\n * @property {0} [nullValue]\n * @property {number} [numberValue]\n * @property {string} [stringValue]\n * @property {boolean} [boolValue]\n * @property {IStruct} [structValue]\n * @property {IListValue} [listValue]\n * @memberof common\n */\n Value: {\n oneofs: {\n kind: {\n oneof: [\n \"nullValue\",\n \"numberValue\",\n \"stringValue\",\n \"boolValue\",\n \"structValue\",\n \"listValue\"\n ]\n }\n },\n fields: {\n nullValue: {\n type: \"NullValue\",\n id: 1\n },\n numberValue: {\n type: \"double\",\n id: 2\n },\n stringValue: {\n type: \"string\",\n id: 3\n },\n boolValue: {\n type: \"bool\",\n id: 4\n },\n structValue: {\n type: \"Struct\",\n id: 5\n },\n listValue: {\n type: \"ListValue\",\n id: 6\n }\n }\n },\n\n NullValue: {\n values: {\n NULL_VALUE: 0\n }\n },\n\n /**\n * Properties of a google.protobuf.ListValue message.\n * @interface IListValue\n * @type {Object}\n * @property {Array.} [values]\n * @memberof common\n */\n ListValue: {\n fields: {\n values: {\n rule: \"repeated\",\n type: \"Value\",\n id: 1\n }\n }\n }\n});\n\ncommon(\"wrappers\", {\n\n /**\n * Properties of a google.protobuf.DoubleValue message.\n * @interface IDoubleValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n DoubleValue: {\n fields: {\n value: {\n type: \"double\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.FloatValue message.\n * @interface IFloatValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n FloatValue: {\n fields: {\n value: {\n type: \"float\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Int64Value message.\n * @interface IInt64Value\n * @type {Object}\n * @property {number|Long} [value]\n * @memberof common\n */\n Int64Value: {\n fields: {\n value: {\n type: \"int64\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.UInt64Value message.\n * @interface IUInt64Value\n * @type {Object}\n * @property {number|Long} [value]\n * @memberof common\n */\n UInt64Value: {\n fields: {\n value: {\n type: \"uint64\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Int32Value message.\n * @interface IInt32Value\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n Int32Value: {\n fields: {\n value: {\n type: \"int32\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.UInt32Value message.\n * @interface IUInt32Value\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n UInt32Value: {\n fields: {\n value: {\n type: \"uint32\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.BoolValue message.\n * @interface IBoolValue\n * @type {Object}\n * @property {boolean} [value]\n * @memberof common\n */\n BoolValue: {\n fields: {\n value: {\n type: \"bool\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.StringValue message.\n * @interface IStringValue\n * @type {Object}\n * @property {string} [value]\n * @memberof common\n */\n StringValue: {\n fields: {\n value: {\n type: \"string\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.BytesValue message.\n * @interface IBytesValue\n * @type {Object}\n * @property {Uint8Array} [value]\n * @memberof common\n */\n BytesValue: {\n fields: {\n value: {\n type: \"bytes\",\n id: 1\n }\n }\n }\n});\n\ncommon(\"field_mask\", {\n\n /**\n * Properties of a google.protobuf.FieldMask message.\n * @interface IDoubleValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n FieldMask: {\n fields: {\n paths: {\n rule: \"repeated\",\n type: \"string\",\n id: 1\n }\n }\n }\n});\n\n/**\n * Gets the root definition of the specified common proto file.\n *\n * Bundled definitions are:\n * - google/protobuf/any.proto\n * - google/protobuf/duration.proto\n * - google/protobuf/empty.proto\n * - google/protobuf/field_mask.proto\n * - google/protobuf/struct.proto\n * - google/protobuf/timestamp.proto\n * - google/protobuf/wrappers.proto\n *\n * @param {string} file Proto file name\n * @returns {INamespace|null} Root definition or `null` if not defined\n */\ncommon.get = function get(file) {\n return common[file] || null;\n};\n","\"use strict\";\n/**\n * Runtime message from/to plain object converters.\n * @namespace\n */\nvar converter = exports;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\n/**\n * Generates a partial value fromObject conveter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\n var defaultAlreadyEmitted = false;\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(d%s){\", prop);\n for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\n // enum unknown values passthrough\n if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen\n (\"default:\")\n (\"if(typeof(d%s)===\\\"number\\\"){m%s=d%s;break}\", prop, prop, prop);\n if (!field.repeated) gen // fallback to default value only for\n // arrays, to avoid leaving holes.\n (\"break\"); // for non-repeated fields, just ignore\n defaultAlreadyEmitted = true;\n }\n gen\n (\"case%j:\", keys[i])\n (\"case %i:\", values[keys[i]])\n (\"m%s=%j\", prop, values[keys[i]])\n (\"break\");\n } gen\n (\"}\");\n } else gen\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\n } else {\n var isUnsigned = false;\n switch (field.type) {\n case \"double\":\n case \"float\": gen\n (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\n break;\n case \"uint32\":\n case \"fixed32\": gen\n (\"m%s=d%s>>>0\", prop, prop);\n break;\n case \"int32\":\n case \"sint32\":\n case \"sfixed32\": gen\n (\"m%s=d%s|0\", prop, prop);\n break;\n case \"uint64\":\n isUnsigned = true;\n // eslint-disable-next-line no-fallthrough\n case \"int64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(util.Long)\")\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\n (\"m%s=parseInt(d%s,10)\", prop, prop)\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\n (\"m%s=d%s\", prop, prop)\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n break;\n case \"bytes\": gen\n (\"if(typeof d%s===\\\"string\\\")\", prop)\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n (\"else if(d%s.length >= 0)\", prop)\n (\"m%s=d%s\", prop, prop);\n break;\n case \"string\": gen\n (\"m%s=String(d%s)\", prop, prop);\n break;\n case \"bool\": gen\n (\"m%s=Boolean(d%s)\", prop, prop);\n break;\n /* default: gen\n (\"m%s=d%s\", prop, prop);\n break; */\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray;\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n (\"if(d instanceof this.ctor)\")\n (\"return d\");\n if (!fields.length) return gen\n (\"return new this.ctor\");\n gen\n (\"var m=new this.ctor\");\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n prop = util.safeProp(field.name);\n\n // Map fields\n if (field.map) { gen\n (\"if(d%s){\", prop)\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s={}\", prop)\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n break;\n case \"bytes\": gen\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n break;\n default: gen\n (\"d%s=m%s\", prop, prop);\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n if (!fields.length)\n return util.codegen()(\"return {}\");\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n (\"if(!o)\")\n (\"o={}\")\n (\"var d={}\");\n\n var repeatedFields = [],\n mapFields = [],\n normalFields = [],\n i = 0;\n for (; i < fields.length; ++i)\n if (!fields[i].partOf)\n ( fields[i].resolve().repeated ? repeatedFields\n : fields[i].map ? mapFields\n : normalFields).push(fields[i]);\n\n if (repeatedFields.length) { gen\n (\"if(o.arrays||o.defaults){\");\n for (i = 0; i < repeatedFields.length; ++i) gen\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n gen\n (\"}\");\n }\n\n if (mapFields.length) { gen\n (\"if(o.objects||o.defaults){\");\n for (i = 0; i < mapFields.length; ++i) gen\n (\"d%s={}\", util.safeProp(mapFields[i].name));\n gen\n (\"}\");\n }\n\n if (normalFields.length) { gen\n (\"if(o.defaults){\");\n for (i = 0; i < normalFields.length; ++i) {\n var field = normalFields[i],\n prop = util.safeProp(field.name);\n if (field.resolvedType instanceof Enum) gen\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n else if (field.long) gen\n (\"if(util.Long){\")\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n (\"}else\")\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n else if (field.bytes) {\n var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\n gen\n (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\n (\"else{\")\n (\"d%s=%s\", prop, arrayDefault)\n (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\n (\"}\");\n } else gen\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n } gen\n (\"}\");\n }\n var hasKs2 = false;\n for (i = 0; i < fields.length; ++i) {\n var field = fields[i],\n index = mtype._fieldsArray.indexOf(field),\n prop = util.safeProp(field.name);\n if (field.map) {\n if (!hasKs2) { hasKs2 = true; gen\n (\"var ks2\");\n } gen\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n (\"d%s={}\", prop)\n (\"for(var j=0;j>>3){\");\n\n var i = 0;\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n ref = \"m\" + util.safeProp(field.name); gen\n (\"case %i: {\", field.id);\n\n // Map fields\n if (field.map) { gen\n (\"if(%s===util.emptyObject)\", ref)\n (\"%s={}\", ref)\n (\"var c2 = r.uint32()+r.pos\");\n\n if (types.defaults[field.keyType] !== undefined) gen\n (\"k=%j\", types.defaults[field.keyType]);\n else gen\n (\"k=null\");\n\n if (types.defaults[type] !== undefined) gen\n (\"value=%j\", types.defaults[type]);\n else gen\n (\"value=null\");\n\n gen\n (\"while(r.pos>>3){\")\n (\"case 1: k=r.%s(); break\", field.keyType)\n (\"case 2:\");\n\n if (types.basic[type] === undefined) gen\n (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\n else gen\n (\"value=r.%s()\", type);\n\n gen\n (\"break\")\n (\"default:\")\n (\"r.skipType(tag2&7)\")\n (\"break\")\n (\"}\")\n (\"}\");\n\n if (types.long[field.keyType] !== undefined) gen\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\n else gen\n (\"%s[k]=value\", ref);\n\n // Repeated fields\n } else if (field.repeated) { gen\n\n (\"if(!(%s&&%s.length))\", ref, ref)\n (\"%s=[]\", ref);\n\n // Packable (always check for forward and backward compatiblity)\n if (types.packed[type] !== undefined) gen\n (\"if((t&7)===2){\")\n (\"var c2=r.uint32()+r.pos\")\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n (\"if(!w)\")\n (\"w=Writer.create()\");\n\n var i, ref;\n\n // \"when a message is serialized its known fields should be written sequentially by field number\"\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n index = mtype._fieldsArray.indexOf(field),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n wireType = types.basic[type];\n ref = \"m\" + util.safeProp(field.name);\n\n // Map fields\n if (field.map) {\n gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n if (wireType === undefined) gen\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n else gen\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n gen\n (\"}\")\n (\"}\");\n\n // Repeated fields\n } else if (field.repeated) { gen\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n // Packed repeated\n if (field.packed && types.packed[type] !== undefined) { gen\n\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n (\"for(var i=0;i<%s.length;++i)\", ref)\n (\"w.%s(%s[i])\", type, ref)\n (\"w.ldelim()\");\n\n // Non-packed\n } else { gen\n\n (\"for(var i=0;i<%s.length;++i)\", ref);\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref + \"[i]\");\n else gen\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n } gen\n (\"}\");\n\n // Non-repeated\n } else {\n if (field.optional) gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\n\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref);\n else gen\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n }\n }\n\n return gen\n (\"return w\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n","\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(\"./namespace\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.} [values] Enum values as an object, by name\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.} [comments] The value comments for this enum\n * @param {Object.>|undefined} [valuesOptions] The value options for this enum\n */\nfunction Enum(name, values, options, comment, comments, valuesOptions) {\n ReflectionObject.call(this, name, options);\n\n if (values && typeof values !== \"object\")\n throw TypeError(\"values must be an object\");\n\n /**\n * Enum values by id.\n * @type {Object.}\n */\n this.valuesById = {};\n\n /**\n * Enum values by name.\n * @type {Object.}\n */\n this.values = Object.create(this.valuesById); // toJSON, marker\n\n /**\n * Enum comment text.\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Value comment texts, if any.\n * @type {Object.}\n */\n this.comments = comments || {};\n\n /**\n * Values options, if any\n * @type {Object>|undefined}\n */\n this.valuesOptions = valuesOptions;\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n // compatible enum. This is used by pbts to write actual enum definitions that work for\n // static and reflection code alike instead of emitting generic object definitions.\n\n if (values)\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n if (typeof values[keys[i]] === \"number\") // use forward entries only\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.} values Enum values\n * @property {Object.} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n enm.reserved = json.reserved;\n return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"valuesOptions\" , this.valuesOptions,\n \"values\" , this.values,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"comment\" , keepComments ? this.comment : undefined,\n \"comments\" , keepComments ? this.comments : undefined\n ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @param {Object.|undefined} [options] Options, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment, options) {\n // utilized by the parser but not by .fromJSON\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (!util.isInteger(id))\n throw TypeError(\"id must be an integer\");\n\n if (this.values[name] !== undefined)\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n if (this.isReservedId(id))\n throw Error(\"id \" + id + \" is reserved in \" + this);\n\n if (this.isReservedName(name))\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n if (this.valuesById[id] !== undefined) {\n if (!(this.options && this.options.allow_alias))\n throw Error(\"duplicate id \" + id + \" in \" + this);\n this.values[name] = id;\n } else\n this.valuesById[this.values[name] = id] = name;\n\n if (options) {\n if (this.valuesOptions === undefined)\n this.valuesOptions = {};\n this.valuesOptions[name] = options || null;\n }\n\n this.comments[name] = comment || null;\n return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n var val = this.values[name];\n if (val == null)\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n delete this.valuesById[val];\n delete this.values[name];\n delete this.comments[name];\n if (this.valuesOptions)\n delete this.valuesOptions[name];\n\n return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n","\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n if (util.isObject(rule)) {\n comment = extend;\n options = rule;\n rule = extend = undefined;\n } else if (util.isObject(extend)) {\n comment = options;\n options = extend;\n extend = undefined;\n }\n\n ReflectionObject.call(this, name, options);\n\n if (!util.isInteger(id) || id < 0)\n throw TypeError(\"id must be a non-negative integer\");\n\n if (!util.isString(type))\n throw TypeError(\"type must be a string\");\n\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n throw TypeError(\"rule must be a string rule\");\n\n if (extend !== undefined && !util.isString(extend))\n throw TypeError(\"extend must be a string\");\n\n /**\n * Field rule, if any.\n * @type {string|undefined}\n */\n if (rule === \"proto3_optional\") {\n rule = \"optional\";\n }\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n /**\n * Field type.\n * @type {string}\n */\n this.type = type; // toJSON\n\n /**\n * Unique field id.\n * @type {number}\n */\n this.id = id; // toJSON, marker\n\n /**\n * Extended type if different from parent.\n * @type {string|undefined}\n */\n this.extend = extend || undefined; // toJSON\n\n /**\n * Whether this field is required.\n * @type {boolean}\n */\n this.required = rule === \"required\";\n\n /**\n * Whether this field is optional.\n * @type {boolean}\n */\n this.optional = !this.required;\n\n /**\n * Whether this field is repeated.\n * @type {boolean}\n */\n this.repeated = rule === \"repeated\";\n\n /**\n * Whether this field is a map or not.\n * @type {boolean}\n */\n this.map = false;\n\n /**\n * Message this field belongs to.\n * @type {Type|null}\n */\n this.message = null;\n\n /**\n * OneOf this field belongs to, if any,\n * @type {OneOf|null}\n */\n this.partOf = null;\n\n /**\n * The field type's default value.\n * @type {*}\n */\n this.typeDefault = null;\n\n /**\n * The field's default value on prototypes.\n * @type {*}\n */\n this.defaultValue = null;\n\n /**\n * Whether this field's value should be treated as a long.\n * @type {boolean}\n */\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n /**\n * Whether this field's value is a buffer.\n * @type {boolean}\n */\n this.bytes = type === \"bytes\";\n\n /**\n * Resolved type if not a basic type.\n * @type {Type|Enum|null}\n */\n this.resolvedType = null;\n\n /**\n * Sister-field within the extended type if a declaring extension field.\n * @type {Field|null}\n */\n this.extensionField = null;\n\n /**\n * Sister-field within the declaring namespace if an extended field.\n * @type {Field|null}\n */\n this.declaringField = null;\n\n /**\n * Internally remembers whether this field is packed.\n * @type {boolean|null}\n * @private\n */\n this._packed = null;\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n get: function() {\n // defaults to packed=true if not explicity set to false\n if (this._packed === null)\n this._packed = this.getOption(\"packed\") !== false;\n return this._packed;\n }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (name === \"packed\") // clear cached before setting\n this._packed = null;\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n if (this.resolved)\n return this;\n\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n if (this.resolvedType instanceof Type)\n this.typeDefault = null;\n else // instanceof Enum\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n } else if (this.options && this.options.proto3_optional) {\n // proto3 scalar value marked optional; should default to null\n this.typeDefault = null;\n }\n\n // use explicitly set default value if present\n if (this.options && this.options[\"default\"] != null) {\n this.typeDefault = this.options[\"default\"];\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n this.typeDefault = this.resolvedType.values[this.typeDefault];\n }\n\n // remove unnecessary options\n if (this.options) {\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n delete this.options.packed;\n if (!Object.keys(this.options).length)\n this.options = undefined;\n }\n\n // convert to internal data type if necesssary\n if (this.long) {\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n /* istanbul ignore else */\n if (Object.freeze)\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\n var buf;\n if (util.base64.test(this.typeDefault))\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n else\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n this.typeDefault = buf;\n }\n\n // take special care of maps and repeated fields\n if (this.map)\n this.defaultValue = util.emptyObject;\n else if (this.repeated)\n this.defaultValue = util.emptyArray;\n else\n this.defaultValue = this.typeDefault;\n\n // ensure proper value on prototype\n if (this.parent instanceof Type)\n this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n // submessage: decorate the submessage and use its name as the type\n if (typeof fieldType === \"function\")\n fieldType = util.decorateType(fieldType).name;\n\n // enum reference: create a reflected copy of the enum and keep reuseing it\n else if (fieldType && typeof fieldType === \"object\")\n fieldType = util.decorateEnum(fieldType).name;\n\n return function fieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message\n * @variation 2\n */\n// like Field.d but without a default value\n\n// Sets up cyclic dependencies (called in index-light)\nField._configure = function configure(Type_) {\n Type = Type_;\n};\n","\"use strict\";\nvar protobuf = module.exports = require(\"./index-minimal\");\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n if (typeof root === \"function\") {\n callback = root;\n root = new protobuf.Root();\n } else if (!root)\n root = new protobuf.Root();\n return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n if (!root)\n root = new protobuf.Root();\n return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder = require(\"./encoder\");\nprotobuf.decoder = require(\"./decoder\");\nprotobuf.verifier = require(\"./verifier\");\nprotobuf.converter = require(\"./converter\");\n\n// Reflection\nprotobuf.ReflectionObject = require(\"./object\");\nprotobuf.Namespace = require(\"./namespace\");\nprotobuf.Root = require(\"./root\");\nprotobuf.Enum = require(\"./enum\");\nprotobuf.Type = require(\"./type\");\nprotobuf.Field = require(\"./field\");\nprotobuf.OneOf = require(\"./oneof\");\nprotobuf.MapField = require(\"./mapfield\");\nprotobuf.Service = require(\"./service\");\nprotobuf.Method = require(\"./method\");\n\n// Runtime\nprotobuf.Message = require(\"./message\");\nprotobuf.wrappers = require(\"./wrappers\");\n\n// Utility\nprotobuf.types = require(\"./types\");\nprotobuf.util = require(\"./util\");\n\n// Set up possibly cyclic reflection dependencies\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","\"use strict\";\nvar protobuf = module.exports = require(\"./index-light\");\n\nprotobuf.build = \"full\";\n\n// Parser\nprotobuf.tokenize = require(\"./tokenize\");\nprotobuf.parse = require(\"./parse\");\nprotobuf.common = require(\"./common\");\n\n// Configure parser\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\n","\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(\"./field\");\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n /* istanbul ignore if */\n if (!util.isString(keyType))\n throw TypeError(\"keyType must be a string\");\n\n /**\n * Key type.\n * @type {string}\n */\n this.keyType = keyType; // toJSON, marker\n\n /**\n * Resolved key type if not a basic type.\n * @type {ReflectionObject|null}\n */\n this.resolvedKeyType = null;\n\n // Overrides Field#map\n this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"keyType\" , this.keyType,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n if (types.mapKey[this.keyType] === undefined)\n throw Error(\"invalid key type: \" + this.keyType);\n\n return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n // submessage value: decorate the submessage and use its name as the type\n if (typeof fieldValueType === \"function\")\n fieldValueType = util.decorateType(fieldValueType).name;\n\n // enum reference value: create a reflected copy of the enum and keep reuseing it\n else if (fieldValueType && typeof fieldValueType === \"object\")\n fieldValueType = util.decorateEnum(fieldValueType).name;\n\n return function mapFieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n };\n};\n","\"use strict\";\nmodule.exports = Message;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties} [properties] Properties to set\n * @template T extends object = object\n */\nfunction Message(properties) {\n // not used internally\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.create = function create(properties) {\n return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encode = function encode(message, writer) {\n return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decode = function decode(reader) {\n return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object\n * @returns {T} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.fromObject = function fromObject(object) {\n return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @template T extends Message\n * @this Constructor\n */\nMessage.toObject = function toObject(message, options) {\n return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/","\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(\"./util\");\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this method\n * @param {Object.} [parsedOptions] Declared options, properly parsed into an object\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\n\n /* istanbul ignore next */\n if (util.isObject(requestStream)) {\n options = requestStream;\n requestStream = responseStream = undefined;\n } else if (util.isObject(responseStream)) {\n options = responseStream;\n responseStream = undefined;\n }\n\n /* istanbul ignore if */\n if (!(type === undefined || util.isString(type)))\n throw TypeError(\"type must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(requestType))\n throw TypeError(\"requestType must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(responseType))\n throw TypeError(\"responseType must be a string\");\n\n ReflectionObject.call(this, name, options);\n\n /**\n * Method type.\n * @type {string}\n */\n this.type = type || \"rpc\"; // toJSON\n\n /**\n * Request type.\n * @type {string}\n */\n this.requestType = requestType; // toJSON, marker\n\n /**\n * Whether requests are streamed or not.\n * @type {boolean|undefined}\n */\n this.requestStream = requestStream ? true : undefined; // toJSON\n\n /**\n * Response type.\n * @type {string}\n */\n this.responseType = responseType; // toJSON\n\n /**\n * Whether responses are streamed or not.\n * @type {boolean|undefined}\n */\n this.responseStream = responseStream ? true : undefined; // toJSON\n\n /**\n * Resolved request type.\n * @type {Type|null}\n */\n this.resolvedRequestType = null;\n\n /**\n * Resolved response type.\n * @type {Type|null}\n */\n this.resolvedResponseType = null;\n\n /**\n * Comment for this method\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Options properly parsed into an object\n */\n this.parsedOptions = parsedOptions;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.} [options] Method options\n * @property {string} comment Method comments\n * @property {Object.} [parsedOptions] Method options properly parsed into an object\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n \"requestType\" , this.requestType,\n \"requestStream\" , this.requestStream,\n \"responseType\" , this.responseType,\n \"responseStream\" , this.responseStream,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined,\n \"parsedOptions\" , this.parsedOptions,\n ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n /* istanbul ignore if */\n if (this.resolved)\n return this;\n\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n","\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\"),\n OneOf = require(\"./oneof\");\n\nvar Type, // cyclic\n Service,\n Enum;\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n if (!(array && array.length))\n return undefined;\n var obj = {};\n for (var i = 0; i < array.length; ++i)\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\n return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\n return true;\n return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (reserved[i] === name)\n return true;\n return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n ReflectionObject.call(this, name, options);\n\n /**\n * Nested objects by name.\n * @type {Object.|undefined}\n */\n this.nested = undefined; // toJSON\n\n /**\n * Cached nested objects as an array.\n * @type {ReflectionObject[]|null}\n * @private\n */\n this._nestedArray = null;\n}\n\nfunction clearCache(namespace) {\n namespace._nestedArray = null;\n return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n get: function() {\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.} [options] Namespace options\n * @property {Object.} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf}\n */\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n return util.toObject([\n \"options\" , this.options,\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\n ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n var ns = this;\n /* istanbul ignore else */\n if (nestedJson) {\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n nested = nestedJson[names[i]];\n ns.add( // most to least likely\n ( nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : nested.id !== undefined\n ? Field.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n }\n return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n return this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n if (this.nested && this.nested[name] instanceof Enum)\n return this.nested[name].values;\n throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace))\n throw TypeError(\"object must be a valid nested object\");\n\n if (!this.nested)\n this.nested = {};\n else {\n var prev = this.get(object.name);\n if (prev) {\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n // replace plain namespace but keep existing nested elements and options\n var nested = prev.nestedArray;\n for (var i = 0; i < nested.length; ++i)\n object.add(nested[i]);\n this.remove(prev);\n if (!this.nested)\n this.nested = {};\n object.setOptions(prev.options, true);\n\n } else\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n }\n }\n this.nested[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n if (!(object instanceof ReflectionObject))\n throw TypeError(\"object must be a ReflectionObject\");\n if (object.parent !== this)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.nested[object.name];\n if (!Object.keys(this.nested).length)\n this.nested = undefined;\n\n object.onRemove(this);\n return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n if (util.isString(path))\n path = path.split(\".\");\n else if (!Array.isArray(path))\n throw TypeError(\"illegal path\");\n if (path && path.length && path[0] === \"\")\n throw Error(\"path must be relative\");\n\n var ptr = this;\n while (path.length > 0) {\n var part = path.shift();\n if (ptr.nested && ptr.nested[part]) {\n ptr = ptr.nested[part];\n if (!(ptr instanceof Namespace))\n throw Error(\"path conflicts with non-namespace objects\");\n } else\n ptr.add(ptr = new Namespace(part));\n }\n if (json)\n ptr.addJSON(json);\n return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n var nested = this.nestedArray, i = 0;\n while (i < nested.length)\n if (nested[i] instanceof Namespace)\n nested[i++].resolveAll();\n else\n nested[i++].resolve();\n return this.resolve();\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n\n /* istanbul ignore next */\n if (typeof filterTypes === \"boolean\") {\n parentAlreadyChecked = filterTypes;\n filterTypes = undefined;\n } else if (filterTypes && !Array.isArray(filterTypes))\n filterTypes = [ filterTypes ];\n\n if (util.isString(path) && path.length) {\n if (path === \".\")\n return this.root;\n path = path.split(\".\");\n } else if (!path.length)\n return this;\n\n // Start at root if path is absolute\n if (path[0] === \"\")\n return this.root.lookup(path.slice(1), filterTypes);\n\n // Test if the first part matches any nested object, and if so, traverse if path contains more\n var found = this.get(path[0]);\n if (found) {\n if (path.length === 1) {\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\n return found;\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\n return found;\n\n // Otherwise try each nested namespace\n } else\n for (var i = 0; i < this.nestedArray.length; ++i)\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\n return found;\n\n // If there hasn't been a match, try again at the parent\n if (this.parent === null || parentAlreadyChecked)\n return null;\n return this.parent.lookup(path, filterTypes);\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n var found = this.lookup(path, [ Type ]);\n if (!found)\n throw Error(\"no such type: \" + path);\n return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n var found = this.lookup(path, [ Enum ]);\n if (!found)\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n var found = this.lookup(path, [ Type, Enum ]);\n if (!found)\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n var found = this.lookup(path, [ Service ]);\n if (!found)\n throw Error(\"no such Service '\" + path + \"' in \" + this);\n return found;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nNamespace._configure = function(Type_, Service_, Enum_) {\n Type = Type_;\n Service = Service_;\n Enum = Enum_;\n};\n","\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nvar util = require(\"./util\");\n\nvar Root; // cyclic\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (options && !util.isObject(options))\n throw TypeError(\"options must be an object\");\n\n /**\n * Options.\n * @type {Object.|undefined}\n */\n this.options = options; // toJSON\n\n /**\n * Parsed Options.\n * @type {Array.>|undefined}\n */\n this.parsedOptions = null;\n\n /**\n * Unique name within its namespace.\n * @type {string}\n */\n this.name = name;\n\n /**\n * Parent namespace.\n * @type {Namespace|null}\n */\n this.parent = null;\n\n /**\n * Whether already resolved or not.\n * @type {boolean}\n */\n this.resolved = false;\n\n /**\n * Comment text, if any.\n * @type {string|null}\n */\n this.comment = null;\n\n /**\n * Defining file name.\n * @type {string|null}\n */\n this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n /**\n * Reference to the root namespace.\n * @name ReflectionObject#root\n * @type {Root}\n * @readonly\n */\n root: {\n get: function() {\n var ptr = this;\n while (ptr.parent !== null)\n ptr = ptr.parent;\n return ptr;\n }\n },\n\n /**\n * Full name including leading dot.\n * @name ReflectionObject#fullName\n * @type {string}\n * @readonly\n */\n fullName: {\n get: function() {\n var path = [ this.name ],\n ptr = this.parent;\n while (ptr) {\n path.unshift(ptr.name);\n ptr = ptr.parent;\n }\n return path.join(\".\");\n }\n }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n if (this.parent && this.parent !== parent)\n this.parent.remove(this);\n this.parent = parent;\n this.resolved = false;\n var root = parent.root;\n if (root instanceof Root)\n root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n var root = parent.root;\n if (root instanceof Root)\n root._handleRemove(this);\n this.parent = null;\n this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n if (this.root instanceof Root)\n this.resolved = true; // only if part of a root\n return this;\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n if (this.options)\n return this.options[name];\n return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (!ifNotSet || !this.options || this.options[name] === undefined)\n (this.options || (this.options = {}))[name] = value;\n return this;\n};\n\n/**\n * Sets a parsed option.\n * @param {string} name parsed Option name\n * @param {*} value Option value\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\n if (!this.parsedOptions) {\n this.parsedOptions = [];\n }\n var parsedOptions = this.parsedOptions;\n if (propName) {\n // If setting a sub property of an option then try to merge it\n // with an existing option\n var opt = parsedOptions.find(function (opt) {\n return Object.prototype.hasOwnProperty.call(opt, name);\n });\n if (opt) {\n // If we found an existing option - just merge the property value\n var newValue = opt[name];\n util.setProperty(newValue, propName, value);\n } else {\n // otherwise, create a new option, set it's property and add it to the list\n opt = {};\n opt[name] = util.setProperty({}, propName, value);\n parsedOptions.push(opt);\n }\n } else {\n // Always create a new option when setting the value of the option itself\n var newOpt = {};\n newOpt[name] = value;\n parsedOptions.push(newOpt);\n }\n return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n if (options)\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n this.setOption(keys[i], options[keys[i]], ifNotSet);\n return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n var className = this.constructor.className,\n fullName = this.fullName;\n if (fullName.length)\n return className + \" \" + fullName;\n return className;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nReflectionObject._configure = function(Root_) {\n Root = Root_;\n};\n","\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.} [fieldNames] Field names\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n if (!Array.isArray(fieldNames)) {\n options = fieldNames;\n fieldNames = undefined;\n }\n ReflectionObject.call(this, name, options);\n\n /* istanbul ignore if */\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n throw TypeError(\"fieldNames must be an Array\");\n\n /**\n * Field names that belong to this oneof.\n * @type {string[]}\n */\n this.oneof = fieldNames || []; // toJSON, marker\n\n /**\n * Fields that belong to this oneof as an array for iteration.\n * @type {Field[]}\n * @readonly\n */\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.} oneof Oneof field names\n * @property {Object.} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"oneof\" , this.oneof,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n if (oneof.parent)\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\n if (!oneof.fieldsArray[i].parent)\n oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n if (field.parent && field.parent !== this.parent)\n field.parent.remove(field);\n this.oneof.push(field.name);\n this.fieldsArray.push(field);\n field.partOf = this; // field.parent remains null\n addFieldsToParent(this);\n return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n var index = this.fieldsArray.indexOf(field);\n\n /* istanbul ignore if */\n if (index < 0)\n throw Error(field + \" is not a member of \" + this);\n\n this.fieldsArray.splice(index, 1);\n index = this.oneof.indexOf(field.name);\n\n /* istanbul ignore else */\n if (index > -1) // theoretical\n this.oneof.splice(index, 1);\n\n field.partOf = null;\n return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n ReflectionObject.prototype.onAdd.call(this, parent);\n var self = this;\n // Collect present fields\n for (var i = 0; i < this.oneof.length; ++i) {\n var field = parent.get(this.oneof[i]);\n if (field && !field.partOf) {\n field.partOf = self;\n self.fieldsArray.push(field);\n }\n }\n // Add not yet present fields\n addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\n if ((field = this.fieldsArray[i]).parent)\n field.parent.remove(field);\n ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n var fieldNames = new Array(arguments.length),\n index = 0;\n while (index < arguments.length)\n fieldNames[index] = arguments[index++];\n return function oneOfDecorator(prototype, oneofName) {\n util.decorateType(prototype.constructor)\n .add(new OneOf(oneofName, fieldNames));\n Object.defineProperty(prototype, oneofName, {\n get: util.oneOfGetter(fieldNames),\n set: util.oneOfSetter(fieldNames)\n });\n };\n};\n","\"use strict\";\nmodule.exports = parse;\n\nparse.filename = null;\nparse.defaults = { keepCase: false };\n\nvar tokenize = require(\"./tokenize\"),\n Root = require(\"./root\"),\n Type = require(\"./type\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n OneOf = require(\"./oneof\"),\n Enum = require(\"./enum\"),\n Service = require(\"./service\"),\n Method = require(\"./method\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar base10Re = /^[1-9][0-9]*$/,\n base10NegRe = /^-?[1-9][0-9]*$/,\n base16Re = /^0[x][0-9a-fA-F]+$/,\n base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\n base8Re = /^0[0-7]+$/,\n base8NegRe = /^-?0[0-7]+$/,\n numberRe = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\n nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\n fqTypeRefRe = /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;\n\n/**\n * Result object returned from {@link parse}.\n * @interface IParserResult\n * @property {string|undefined} package Package name, if declared\n * @property {string[]|undefined} imports Imports, if any\n * @property {string[]|undefined} weakImports Weak imports, if any\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\n * @property {Root} root Populated root instance\n */\n\n/**\n * Options modifying the behavior of {@link parse}.\n * @interface IParseOptions\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\n * @property {boolean} [preferTrailingComment=false] Use trailing comment when both leading comment and trailing comment exist.\n */\n\n/**\n * Options modifying the behavior of JSON serialization.\n * @interface IToJSONOptions\n * @property {boolean} [keepComments=false] Serializes comments.\n */\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @param {string} source Source contents\n * @param {Root} root Root to populate\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n */\nfunction parse(source, root, options) {\n /* eslint-disable callback-return */\n if (!(root instanceof Root)) {\n options = root;\n root = new Root();\n }\n if (!options)\n options = parse.defaults;\n\n var preferTrailingComment = options.preferTrailingComment || false;\n var tn = tokenize(source, options.alternateCommentMode || false),\n next = tn.next,\n push = tn.push,\n peek = tn.peek,\n skip = tn.skip,\n cmnt = tn.cmnt;\n\n var head = true,\n pkg,\n imports,\n weakImports,\n syntax,\n isProto3 = false;\n\n var ptr = root;\n\n var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\n\n /* istanbul ignore next */\n function illegal(token, name, insideTryCatch) {\n var filename = parse.filename;\n if (!insideTryCatch)\n parse.filename = null;\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\n }\n\n function readString() {\n var values = [],\n token;\n do {\n /* istanbul ignore if */\n if ((token = next()) !== \"\\\"\" && token !== \"'\")\n throw illegal(token);\n\n values.push(next());\n skip(token);\n token = peek();\n } while (token === \"\\\"\" || token === \"'\");\n return values.join(\"\");\n }\n\n function readValue(acceptTypeRef) {\n var token = next();\n switch (token) {\n case \"'\":\n case \"\\\"\":\n push(token);\n return readString();\n case \"true\": case \"TRUE\":\n return true;\n case \"false\": case \"FALSE\":\n return false;\n }\n try {\n return parseNumber(token, /* insideTryCatch */ true);\n } catch (e) {\n\n /* istanbul ignore else */\n if (acceptTypeRef && typeRefRe.test(token))\n return token;\n\n /* istanbul ignore next */\n throw illegal(token, \"value\");\n }\n }\n\n function readRanges(target, acceptStrings) {\n var token, start;\n do {\n if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\"))\n target.push(readString());\n else\n target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\n } while (skip(\",\", true));\n var dummy = {options: undefined};\n dummy.setOption = function(name, value) {\n if (this.options === undefined) this.options = {};\n this.options[name] = value;\n };\n ifBlock(\n dummy,\n function parseRange_block(token) {\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(dummy, token); // skip\n skip(\";\");\n } else\n throw illegal(token);\n },\n function parseRange_line() {\n parseInlineOptions(dummy); // skip\n });\n }\n\n function parseNumber(token, insideTryCatch) {\n var sign = 1;\n if (token.charAt(0) === \"-\") {\n sign = -1;\n token = token.substring(1);\n }\n switch (token) {\n case \"inf\": case \"INF\": case \"Inf\":\n return sign * Infinity;\n case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\n return NaN;\n case \"0\":\n return 0;\n }\n if (base10Re.test(token))\n return sign * parseInt(token, 10);\n if (base16Re.test(token))\n return sign * parseInt(token, 16);\n if (base8Re.test(token))\n return sign * parseInt(token, 8);\n\n /* istanbul ignore else */\n if (numberRe.test(token))\n return sign * parseFloat(token);\n\n /* istanbul ignore next */\n throw illegal(token, \"number\", insideTryCatch);\n }\n\n function parseId(token, acceptNegative) {\n switch (token) {\n case \"max\": case \"MAX\": case \"Max\":\n return 536870911;\n case \"0\":\n return 0;\n }\n\n /* istanbul ignore if */\n if (!acceptNegative && token.charAt(0) === \"-\")\n throw illegal(token, \"id\");\n\n if (base10NegRe.test(token))\n return parseInt(token, 10);\n if (base16NegRe.test(token))\n return parseInt(token, 16);\n\n /* istanbul ignore else */\n if (base8NegRe.test(token))\n return parseInt(token, 8);\n\n /* istanbul ignore next */\n throw illegal(token, \"id\");\n }\n\n function parsePackage() {\n\n /* istanbul ignore if */\n if (pkg !== undefined)\n throw illegal(\"package\");\n\n pkg = next();\n\n /* istanbul ignore if */\n if (!typeRefRe.test(pkg))\n throw illegal(pkg, \"name\");\n\n ptr = ptr.define(pkg);\n skip(\";\");\n }\n\n function parseImport() {\n var token = peek();\n var whichImports;\n switch (token) {\n case \"weak\":\n whichImports = weakImports || (weakImports = []);\n next();\n break;\n case \"public\":\n next();\n // eslint-disable-next-line no-fallthrough\n default:\n whichImports = imports || (imports = []);\n break;\n }\n token = readString();\n skip(\";\");\n whichImports.push(token);\n }\n\n function parseSyntax() {\n skip(\"=\");\n syntax = readString();\n isProto3 = syntax === \"proto3\";\n\n /* istanbul ignore if */\n if (!isProto3 && syntax !== \"proto2\")\n throw illegal(syntax, \"syntax\");\n\n // Syntax is needed to understand the meaning of the optional field rule\n // Otherwise the meaning is ambiguous between proto2 and proto3\n root.setOption(\"syntax\", syntax);\n\n skip(\";\");\n }\n\n function parseCommon(parent, token) {\n switch (token) {\n\n case \"option\":\n parseOption(parent, token);\n skip(\";\");\n return true;\n\n case \"message\":\n parseType(parent, token);\n return true;\n\n case \"enum\":\n parseEnum(parent, token);\n return true;\n\n case \"service\":\n parseService(parent, token);\n return true;\n\n case \"extend\":\n parseExtension(parent, token);\n return true;\n }\n return false;\n }\n\n function ifBlock(obj, fnIf, fnElse) {\n var trailingLine = tn.line;\n if (obj) {\n if(typeof obj.comment !== \"string\") {\n obj.comment = cmnt(); // try block-type comment\n }\n obj.filename = parse.filename;\n }\n if (skip(\"{\", true)) {\n var token;\n while ((token = next()) !== \"}\")\n fnIf(token);\n skip(\";\", true);\n } else {\n if (fnElse)\n fnElse();\n skip(\";\");\n if (obj && (typeof obj.comment !== \"string\" || preferTrailingComment))\n obj.comment = cmnt(trailingLine) || obj.comment; // try line-type comment\n }\n }\n\n function parseType(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"type name\");\n\n var type = new Type(token);\n ifBlock(type, function parseType_block(token) {\n if (parseCommon(type, token))\n return;\n\n switch (token) {\n\n case \"map\":\n parseMapField(type, token);\n break;\n\n case \"required\":\n case \"repeated\":\n parseField(type, token);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(type, \"proto3_optional\");\n } else {\n parseField(type, \"optional\");\n }\n break;\n\n case \"oneof\":\n parseOneOf(type, token);\n break;\n\n case \"extensions\":\n readRanges(type.extensions || (type.extensions = []));\n break;\n\n case \"reserved\":\n readRanges(type.reserved || (type.reserved = []), true);\n break;\n\n default:\n /* istanbul ignore if */\n if (!isProto3 || !typeRefRe.test(token))\n throw illegal(token);\n\n push(token);\n parseField(type, \"optional\");\n break;\n }\n });\n parent.add(type);\n }\n\n function parseField(parent, rule, extend) {\n var type = next();\n if (type === \"group\") {\n parseGroup(parent, rule);\n return;\n }\n // Type names can consume multiple tokens, in multiple variants:\n // package.subpackage field tokens: \"package.subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package . subpackage field tokens: \"package\" \".\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package. subpackage field tokens: \"package.\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package .subpackage field tokens: \"package\" \".subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // Keep reading tokens until we get a type name with no period at the end,\n // and the next token does not start with a period.\n while (type.endsWith(\".\") || peek().startsWith(\".\")) {\n type += next();\n }\n\n /* istanbul ignore if */\n if (!typeRefRe.test(type))\n throw illegal(type, \"type\");\n\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n name = applyCase(name);\n skip(\"=\");\n\n var field = new Field(name, parseId(next()), type, rule, extend);\n ifBlock(field, function parseField_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(field, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseField_line() {\n parseInlineOptions(field);\n });\n\n if (rule === \"proto3_optional\") {\n // for proto3 optional fields, we create a single-member Oneof to mimic \"optional\" behavior\n var oneof = new OneOf(\"_\" + name);\n field.setOption(\"proto3_optional\", true);\n oneof.add(field);\n parent.add(oneof);\n } else {\n parent.add(field);\n }\n\n // JSON defaults to packed=true if not set so we have to set packed=false explicity when\n // parsing proto2 descriptors without the option, where applicable. This must be done for\n // all known packable types and anything that could be an enum (= is not a basic type).\n if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined))\n field.setOption(\"packed\", false, /* ifNotSet */ true);\n }\n\n function parseGroup(parent, rule) {\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n var fieldName = util.lcFirst(name);\n if (name === fieldName)\n name = util.ucFirst(name);\n skip(\"=\");\n var id = parseId(next());\n var type = new Type(name);\n type.group = true;\n var field = new Field(fieldName, id, name, rule);\n field.filename = parse.filename;\n ifBlock(type, function parseGroup_block(token) {\n switch (token) {\n\n case \"option\":\n parseOption(type, token);\n skip(\";\");\n break;\n\n case \"required\":\n case \"repeated\":\n parseField(type, token);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(type, \"proto3_optional\");\n } else {\n parseField(type, \"optional\");\n }\n break;\n\n case \"message\":\n parseType(type, token);\n break;\n\n case \"enum\":\n parseEnum(type, token);\n break;\n\n /* istanbul ignore next */\n default:\n throw illegal(token); // there are no groups with proto3 semantics\n }\n });\n parent.add(type)\n .add(field);\n }\n\n function parseMapField(parent) {\n skip(\"<\");\n var keyType = next();\n\n /* istanbul ignore if */\n if (types.mapKey[keyType] === undefined)\n throw illegal(keyType, \"type\");\n\n skip(\",\");\n var valueType = next();\n\n /* istanbul ignore if */\n if (!typeRefRe.test(valueType))\n throw illegal(valueType, \"type\");\n\n skip(\">\");\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n skip(\"=\");\n var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\n ifBlock(field, function parseMapField_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(field, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseMapField_line() {\n parseInlineOptions(field);\n });\n parent.add(field);\n }\n\n function parseOneOf(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var oneof = new OneOf(applyCase(token));\n ifBlock(oneof, function parseOneOf_block(token) {\n if (token === \"option\") {\n parseOption(oneof, token);\n skip(\";\");\n } else {\n push(token);\n parseField(oneof, \"optional\");\n }\n });\n parent.add(oneof);\n }\n\n function parseEnum(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var enm = new Enum(token);\n ifBlock(enm, function parseEnum_block(token) {\n switch(token) {\n case \"option\":\n parseOption(enm, token);\n skip(\";\");\n break;\n\n case \"reserved\":\n readRanges(enm.reserved || (enm.reserved = []), true);\n break;\n\n default:\n parseEnumValue(enm, token);\n }\n });\n parent.add(enm);\n }\n\n function parseEnumValue(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token))\n throw illegal(token, \"name\");\n\n skip(\"=\");\n var value = parseId(next(), true),\n dummy = {\n options: undefined\n };\n dummy.setOption = function(name, value) {\n if (this.options === undefined)\n this.options = {};\n this.options[name] = value;\n };\n ifBlock(dummy, function parseEnumValue_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(dummy, token); // skip\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseEnumValue_line() {\n parseInlineOptions(dummy); // skip\n });\n parent.add(token, value, dummy.comment, dummy.options);\n }\n\n function parseOption(parent, token) {\n var isCustom = skip(\"(\", true);\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var name = token;\n var option = name;\n var propName;\n\n if (isCustom) {\n skip(\")\");\n name = \"(\" + name + \")\";\n option = name;\n token = peek();\n if (fqTypeRefRe.test(token)) {\n propName = token.slice(1); //remove '.' before property name\n name += token;\n next();\n }\n }\n skip(\"=\");\n var optionValue = parseOptionValue(parent, name);\n setParsedOption(parent, option, optionValue, propName);\n }\n\n function parseOptionValue(parent, name) {\n // { a: \"foo\" b { c: \"bar\" } }\n if (skip(\"{\", true)) {\n var objectResult = {};\n\n while (!skip(\"}\", true)) {\n /* istanbul ignore if */\n if (!nameRe.test(token = next())) {\n throw illegal(token, \"name\");\n }\n if (token === null) {\n throw illegal(token, \"end of input\");\n }\n\n var value;\n var propName = token;\n\n skip(\":\", true);\n\n if (peek() === \"{\")\n value = parseOptionValue(parent, name + \".\" + token);\n else if (peek() === \"[\") {\n // option (my_option) = {\n // repeated_value: [ \"foo\", \"bar\" ]\n // };\n value = [];\n var lastValue;\n if (skip(\"[\", true)) {\n do {\n lastValue = readValue(true);\n value.push(lastValue);\n } while (skip(\",\", true));\n skip(\"]\");\n if (typeof lastValue !== \"undefined\") {\n setOption(parent, name + \".\" + token, lastValue);\n }\n }\n } else {\n value = readValue(true);\n setOption(parent, name + \".\" + token, value);\n }\n\n var prevValue = objectResult[propName];\n\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n\n objectResult[propName] = value;\n\n // Semicolons and commas can be optional\n skip(\",\", true);\n skip(\";\", true);\n }\n\n return objectResult;\n }\n\n var simpleValue = readValue(true);\n setOption(parent, name, simpleValue);\n return simpleValue;\n // Does not enforce a delimiter to be universal\n }\n\n function setOption(parent, name, value) {\n if (parent.setOption)\n parent.setOption(name, value);\n }\n\n function setParsedOption(parent, name, value, propName) {\n if (parent.setParsedOption)\n parent.setParsedOption(name, value, propName);\n }\n\n function parseInlineOptions(parent) {\n if (skip(\"[\", true)) {\n do {\n parseOption(parent, \"option\");\n } while (skip(\",\", true));\n skip(\"]\");\n }\n return parent;\n }\n\n function parseService(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"service name\");\n\n var service = new Service(token);\n ifBlock(service, function parseService_block(token) {\n if (parseCommon(service, token))\n return;\n\n /* istanbul ignore else */\n if (token === \"rpc\")\n parseMethod(service, token);\n else\n throw illegal(token);\n });\n parent.add(service);\n }\n\n function parseMethod(parent, token) {\n // Get the comment of the preceding line now (if one exists) in case the\n // method is defined across multiple lines.\n var commentText = cmnt();\n\n var type = token;\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var name = token,\n requestType, requestStream,\n responseType, responseStream;\n\n skip(\"(\");\n if (skip(\"stream\", true))\n requestStream = true;\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token);\n\n requestType = token;\n skip(\")\"); skip(\"returns\"); skip(\"(\");\n if (skip(\"stream\", true))\n responseStream = true;\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token);\n\n responseType = token;\n skip(\")\");\n\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\n method.comment = commentText;\n ifBlock(method, function parseMethod_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(method, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n });\n parent.add(method);\n }\n\n function parseExtension(parent, token) {\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token, \"reference\");\n\n var reference = token;\n ifBlock(null, function parseExtension_block(token) {\n switch (token) {\n\n case \"required\":\n case \"repeated\":\n parseField(parent, token, reference);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(parent, \"proto3_optional\", reference);\n } else {\n parseField(parent, \"optional\", reference);\n }\n break;\n\n default:\n /* istanbul ignore if */\n if (!isProto3 || !typeRefRe.test(token))\n throw illegal(token);\n push(token);\n parseField(parent, \"optional\", reference);\n break;\n }\n });\n }\n\n var token;\n while ((token = next()) !== null) {\n switch (token) {\n\n case \"package\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parsePackage();\n break;\n\n case \"import\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parseImport();\n break;\n\n case \"syntax\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parseSyntax();\n break;\n\n case \"option\":\n\n parseOption(ptr, token);\n skip(\";\");\n break;\n\n default:\n\n /* istanbul ignore else */\n if (parseCommon(ptr, token)) {\n head = false;\n continue;\n }\n\n /* istanbul ignore next */\n throw illegal(token);\n }\n }\n\n parse.filename = null;\n return {\n \"package\" : pkg,\n \"imports\" : imports,\n weakImports : weakImports,\n syntax : syntax,\n root : root\n };\n}\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @name parse\n * @function\n * @param {string} source Source contents\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n * @variation 2\n */\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field = require(\"./field\"),\n Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n util = require(\"./util\");\n\nvar Type, // cyclic\n parse, // might be excluded\n common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.} [options] Top level options\n */\nfunction Root(options) {\n Namespace.call(this, \"\", options);\n\n /**\n * Deferred extension fields.\n * @type {Field[]}\n */\n this.deferred = [];\n\n /**\n * Resolved file names of loaded files.\n * @type {string[]}\n */\n this.files = [];\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Nameespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n if (!root)\n root = new Root();\n if (json.options)\n root.setOptions(json.options);\n return root.addJSON(json.nested);\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n/**\n * Fetch content from file path or url\n * This method exists so you can override it with your own logic.\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.fetch = util.fetch;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = undefined;\n }\n var self = this;\n if (!callback)\n return util.asPromise(load, self, filename, options);\n\n var sync = callback === SYNC; // undocumented\n\n // Finishes loading by calling the callback (exactly once)\n function finish(err, root) {\n /* istanbul ignore if */\n if (!callback)\n return;\n if (sync)\n throw err;\n var cb = callback;\n callback = null;\n cb(err, root);\n }\n\n // Bundled definition existence checking\n function getBundledFileName(filename) {\n var idx = filename.lastIndexOf(\"google/protobuf/\");\n if (idx > -1) {\n var altname = filename.substring(idx);\n if (altname in common) return altname;\n }\n return null;\n }\n\n // Processes a single file\n function process(filename, source) {\n try {\n if (util.isString(source) && source.charAt(0) === \"{\")\n source = JSON.parse(source);\n if (!util.isString(source))\n self.setOptions(source.options).addJSON(source.nested);\n else {\n parse.filename = filename;\n var parsed = parse(source, self, options),\n resolved,\n i = 0;\n if (parsed.imports)\n for (; i < parsed.imports.length; ++i)\n if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\n fetch(resolved);\n if (parsed.weakImports)\n for (i = 0; i < parsed.weakImports.length; ++i)\n if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\n fetch(resolved, true);\n }\n } catch (err) {\n finish(err);\n }\n if (!sync && !queued)\n finish(null, self); // only once anyway\n }\n\n // Fetches a single file\n function fetch(filename, weak) {\n filename = getBundledFileName(filename) || filename;\n\n // Skip if already loaded / attempted\n if (self.files.indexOf(filename) > -1)\n return;\n self.files.push(filename);\n\n // Shortcut bundled definitions\n if (filename in common) {\n if (sync)\n process(filename, common[filename]);\n else {\n ++queued;\n setTimeout(function() {\n --queued;\n process(filename, common[filename]);\n });\n }\n return;\n }\n\n // Otherwise fetch from disk or network\n if (sync) {\n var source;\n try {\n source = util.fs.readFileSync(filename).toString(\"utf8\");\n } catch (err) {\n if (!weak)\n finish(err);\n return;\n }\n process(filename, source);\n } else {\n ++queued;\n self.fetch(filename, function(err, source) {\n --queued;\n /* istanbul ignore if */\n if (!callback)\n return; // terminated meanwhile\n if (err) {\n /* istanbul ignore else */\n if (!weak)\n finish(err);\n else if (!queued) // can't be covered reliably\n finish(null, self);\n return;\n }\n process(filename, source);\n });\n }\n }\n var queued = 0;\n\n // Assembling the root namespace doesn't require working type\n // references anymore, so we can load everything in parallel\n if (util.isString(filename))\n filename = [ filename ];\n for (var i = 0, resolved; i < filename.length; ++i)\n if (resolved = self.resolvePath(\"\", filename[i]))\n fetch(resolved);\n\n if (sync)\n return self;\n if (!queued)\n finish(null, self);\n return undefined;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n if (!util.isNode)\n throw Error(\"not supported\");\n return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n if (this.deferred.length)\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n }).join(\", \"));\n return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n var extendedType = field.parent.lookup(field.extend);\n if (extendedType) {\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n //do not allow to extend same field twice to prevent the error\n if (extendedType.get(sisterField.name)) {\n return true;\n }\n sisterField.declaringField = field;\n field.extensionField = sisterField;\n extendedType.add(sisterField);\n return true;\n }\n return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n if (object instanceof Field) {\n\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n if (!tryHandleExtension(this, object))\n this.deferred.push(object);\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n if (object instanceof Type) // Try to handle any deferred extensions\n for (var i = 0; i < this.deferred.length;)\n if (tryHandleExtension(this, this.deferred[i]))\n this.deferred.splice(i, 1);\n else\n ++i;\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n this._handleAdd(object._nestedArray[j]);\n if (exposeRe.test(object.name))\n object.parent[object.name] = object; // expose namespace as property of its parent\n }\n\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\n // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n if (object instanceof Field) {\n\n if (/* an extension field */ object.extend !== undefined) {\n if (/* already handled */ object.extensionField) { // remove its sister field\n object.extensionField.parent.remove(object.extensionField);\n object.extensionField = null;\n } else { // cancel the extension\n var index = this.deferred.indexOf(object);\n /* istanbul ignore else */\n if (index > -1)\n this.deferred.splice(index, 1);\n }\n }\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose enum values\n\n } else if (object instanceof Namespace) {\n\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n this._handleRemove(object._nestedArray[i]);\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose namespaces\n\n }\n};\n\n// Sets up cyclic dependencies (called in index-light)\nRoot._configure = function(Type_, parse_, common_) {\n Type = Type_;\n parse = parse_;\n common = common_;\n};\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(\"./method\"),\n util = require(\"./util\"),\n rpc = require(\"./rpc\");\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Service methods.\n * @type {Object.}\n */\n this.methods = {}; // toJSON, marker\n\n /**\n * Cached methods as an array.\n * @type {Method[]|null}\n * @private\n */\n this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n var service = new Service(name, json.options);\n /* istanbul ignore else */\n if (json.methods)\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n if (json.nested)\n service.addJSON(json.nested);\n service.comment = json.comment;\n return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n get: function() {\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n }\n});\n\nfunction clearCache(service) {\n service._methodsArray = null;\n return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n return this.methods[name]\n || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n var methods = this.methodsArray;\n for (var i = 0; i < methods.length; ++i)\n methods[i].resolve();\n return Namespace.prototype.resolve.call(this);\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n /* istanbul ignore if */\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Method) {\n this.methods[object.name] = object;\n object.parent = this;\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n if (object instanceof Method) {\n\n /* istanbul ignore if */\n if (this.methods[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.methods[object.name];\n object.parent = null;\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n m: method,\n q: method.resolvedRequestType.ctor,\n s: method.resolvedResponseType.ctor\n });\n }\n return rpcService;\n};\n","\"use strict\";\nmodule.exports = tokenize;\n\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\n\nvar setCommentRe = /^ *[*/]+ */,\n setCommentAltRe = /^\\s*\\*?\\/*/,\n setCommentSplitRe = /\\n/g,\n whitespaceRe = /\\s/,\n unescapeRe = /\\\\(.?)/g;\n\nvar unescapeMap = {\n \"0\": \"\\0\",\n \"r\": \"\\r\",\n \"n\": \"\\n\",\n \"t\": \"\\t\"\n};\n\n/**\n * Unescapes a string.\n * @param {string} str String to unescape\n * @returns {string} Unescaped string\n * @property {Object.} map Special characters map\n * @memberof tokenize\n */\nfunction unescape(str) {\n return str.replace(unescapeRe, function($0, $1) {\n switch ($1) {\n case \"\\\\\":\n case \"\":\n return $1;\n default:\n return unescapeMap[$1] || \"\";\n }\n });\n}\n\ntokenize.unescape = unescape;\n\n/**\n * Gets the next token and advances.\n * @typedef TokenizerHandleNext\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Peeks for the next token.\n * @typedef TokenizerHandlePeek\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Pushes a token back to the stack.\n * @typedef TokenizerHandlePush\n * @type {function}\n * @param {string} token Token\n * @returns {undefined}\n */\n\n/**\n * Skips the next token.\n * @typedef TokenizerHandleSkip\n * @type {function}\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] If optional\n * @returns {boolean} Whether the token matched\n * @throws {Error} If the token didn't match and is not optional\n */\n\n/**\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\n * @typedef TokenizerHandleCmnt\n * @type {function}\n * @param {number} [line] Line number\n * @returns {string|null} Comment text or `null` if none\n */\n\n/**\n * Handle object returned from {@link tokenize}.\n * @interface ITokenizerHandle\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\n * @property {number} line Current line number\n */\n\n/**\n * Tokenizes the given .proto source and returns an object with useful utility functions.\n * @param {string} source Source contents\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\n * @returns {ITokenizerHandle} Tokenizer handle\n */\nfunction tokenize(source, alternateCommentMode) {\n /* eslint-disable callback-return */\n source = source.toString();\n\n var offset = 0,\n length = source.length,\n line = 1,\n lastCommentLine = 0,\n comments = {};\n\n var stack = [];\n\n var stringDelim = null;\n\n /* istanbul ignore next */\n /**\n * Creates an error for illegal syntax.\n * @param {string} subject Subject\n * @returns {Error} Error created\n * @inner\n */\n function illegal(subject) {\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\n }\n\n /**\n * Reads a string till its end.\n * @returns {string} String read\n * @inner\n */\n function readString() {\n var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\n re.lastIndex = offset - 1;\n var match = re.exec(source);\n if (!match)\n throw illegal(\"string\");\n offset = re.lastIndex;\n push(stringDelim);\n stringDelim = null;\n return unescape(match[1]);\n }\n\n /**\n * Gets the character at `pos` within the source.\n * @param {number} pos Position\n * @returns {string} Character\n * @inner\n */\n function charAt(pos) {\n return source.charAt(pos);\n }\n\n /**\n * Sets the current comment text.\n * @param {number} start Start offset\n * @param {number} end End offset\n * @param {boolean} isLeading set if a leading comment\n * @returns {undefined}\n * @inner\n */\n function setComment(start, end, isLeading) {\n var comment = {\n type: source.charAt(start++),\n lineEmpty: false,\n leading: isLeading,\n };\n var lookback;\n if (alternateCommentMode) {\n lookback = 2; // alternate comment parsing: \"//\" or \"/*\"\n } else {\n lookback = 3; // \"///\" or \"/**\"\n }\n var commentOffset = start - lookback,\n c;\n do {\n if (--commentOffset < 0 ||\n (c = source.charAt(commentOffset)) === \"\\n\") {\n comment.lineEmpty = true;\n break;\n }\n } while (c === \" \" || c === \"\\t\");\n var lines = source\n .substring(start, end)\n .split(setCommentSplitRe);\n for (var i = 0; i < lines.length; ++i)\n lines[i] = lines[i]\n .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\n .trim();\n comment.text = lines\n .join(\"\\n\")\n .trim();\n\n comments[line] = comment;\n lastCommentLine = line;\n }\n\n function isDoubleSlashCommentLine(startOffset) {\n var endOffset = findEndOfLine(startOffset);\n\n // see if remaining line matches comment pattern\n var lineText = source.substring(startOffset, endOffset);\n var isComment = /^\\s*\\/\\//.test(lineText);\n return isComment;\n }\n\n function findEndOfLine(cursor) {\n // find end of cursor's line\n var endOffset = cursor;\n while (endOffset < length && charAt(endOffset) !== \"\\n\") {\n endOffset++;\n }\n return endOffset;\n }\n\n /**\n * Obtains the next token.\n * @returns {string|null} Next token or `null` on eof\n * @inner\n */\n function next() {\n if (stack.length > 0)\n return stack.shift();\n if (stringDelim)\n return readString();\n var repeat,\n prev,\n curr,\n start,\n isDoc,\n isLeadingComment = offset === 0;\n do {\n if (offset === length)\n return null;\n repeat = false;\n while (whitespaceRe.test(curr = charAt(offset))) {\n if (curr === \"\\n\") {\n isLeadingComment = true;\n ++line;\n }\n if (++offset === length)\n return null;\n }\n\n if (charAt(offset) === \"/\") {\n if (++offset === length) {\n throw illegal(\"comment\");\n }\n if (charAt(offset) === \"/\") { // Line\n if (!alternateCommentMode) {\n // check for triple-slash comment\n isDoc = charAt(start = offset + 1) === \"/\";\n\n while (charAt(++offset) !== \"\\n\") {\n if (offset === length) {\n return null;\n }\n }\n ++offset;\n if (isDoc) {\n setComment(start, offset - 1, isLeadingComment);\n // Trailing comment cannot not be multi-line,\n // so leading comment state should be reset to handle potential next comments\n isLeadingComment = true;\n }\n ++line;\n repeat = true;\n } else {\n // check for double-slash comments, consolidating consecutive lines\n start = offset;\n isDoc = false;\n if (isDoubleSlashCommentLine(offset - 1)) {\n isDoc = true;\n do {\n offset = findEndOfLine(offset);\n if (offset === length) {\n break;\n }\n offset++;\n if (!isLeadingComment) {\n // Trailing comment cannot not be multi-line\n break;\n }\n } while (isDoubleSlashCommentLine(offset));\n } else {\n offset = Math.min(length, findEndOfLine(offset) + 1);\n }\n if (isDoc) {\n setComment(start, offset, isLeadingComment);\n isLeadingComment = true;\n }\n line++;\n repeat = true;\n }\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\n // check for /** (regular comment mode) or /* (alternate comment mode)\n start = offset + 1;\n isDoc = alternateCommentMode || charAt(start) === \"*\";\n do {\n if (curr === \"\\n\") {\n ++line;\n }\n if (++offset === length) {\n throw illegal(\"comment\");\n }\n prev = curr;\n curr = charAt(offset);\n } while (prev !== \"*\" || curr !== \"/\");\n ++offset;\n if (isDoc) {\n setComment(start, offset - 2, isLeadingComment);\n isLeadingComment = true;\n }\n repeat = true;\n } else {\n return \"/\";\n }\n }\n } while (repeat);\n\n // offset !== length if we got here\n\n var end = offset;\n delimRe.lastIndex = 0;\n var delim = delimRe.test(charAt(end++));\n if (!delim)\n while (end < length && !delimRe.test(charAt(end)))\n ++end;\n var token = source.substring(offset, offset = end);\n if (token === \"\\\"\" || token === \"'\")\n stringDelim = token;\n return token;\n }\n\n /**\n * Pushes a token back to the stack.\n * @param {string} token Token\n * @returns {undefined}\n * @inner\n */\n function push(token) {\n stack.push(token);\n }\n\n /**\n * Peeks for the next token.\n * @returns {string|null} Token or `null` on eof\n * @inner\n */\n function peek() {\n if (!stack.length) {\n var token = next();\n if (token === null)\n return null;\n push(token);\n }\n return stack[0];\n }\n\n /**\n * Skips a token.\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] Whether the token is optional\n * @returns {boolean} `true` when skipped, `false` if not\n * @throws {Error} When a required token is not present\n * @inner\n */\n function skip(expected, optional) {\n var actual = peek(),\n equals = actual === expected;\n if (equals) {\n next();\n return true;\n }\n if (!optional)\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\n return false;\n }\n\n /**\n * Gets a comment.\n * @param {number} [trailingLine] Line number if looking for a trailing comment\n * @returns {string|null} Comment text\n * @inner\n */\n function cmnt(trailingLine) {\n var ret = null;\n var comment;\n if (trailingLine === undefined) {\n comment = comments[line - 1];\n delete comments[line - 1];\n if (comment && (alternateCommentMode || comment.type === \"*\" || comment.lineEmpty)) {\n ret = comment.leading ? comment.text : null;\n }\n } else {\n /* istanbul ignore else */\n if (lastCommentLine < trailingLine) {\n peek();\n }\n comment = comments[trailingLine];\n delete comments[trailingLine];\n if (comment && !comment.lineEmpty && (alternateCommentMode || comment.type === \"/\")) {\n ret = comment.leading ? null : comment.text;\n }\n }\n return ret;\n }\n\n return Object.defineProperty({\n next: next,\n peek: peek,\n push: push,\n skip: skip,\n cmnt: cmnt\n }, \"line\", {\n get: function() { return line; }\n });\n /* eslint-enable callback-return */\n}\n","\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n Service = require(\"./service\"),\n Message = require(\"./message\"),\n Reader = require(\"./reader\"),\n Writer = require(\"./writer\"),\n util = require(\"./util\"),\n encoder = require(\"./encoder\"),\n decoder = require(\"./decoder\"),\n verifier = require(\"./verifier\"),\n converter = require(\"./converter\"),\n wrappers = require(\"./wrappers\");\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.} [options] Declared options\n */\nfunction Type(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Message fields.\n * @type {Object.}\n */\n this.fields = {}; // toJSON, marker\n\n /**\n * Oneofs declared within this namespace, if any.\n * @type {Object.}\n */\n this.oneofs = undefined; // toJSON\n\n /**\n * Extension ranges, if any.\n * @type {number[][]}\n */\n this.extensions = undefined; // toJSON\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n /*?\n * Whether this type is a legacy group.\n * @type {boolean|undefined}\n */\n this.group = undefined; // toJSON\n\n /**\n * Cached fields by id.\n * @type {Object.|null}\n * @private\n */\n this._fieldsById = null;\n\n /**\n * Cached fields as an array.\n * @type {Field[]|null}\n * @private\n */\n this._fieldsArray = null;\n\n /**\n * Cached oneofs as an array.\n * @type {OneOf[]|null}\n * @private\n */\n this._oneofsArray = null;\n\n /**\n * Cached constructor.\n * @type {Constructor<{}>}\n * @private\n */\n this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n /**\n * Message fields by id.\n * @name Type#fieldsById\n * @type {Object.}\n * @readonly\n */\n fieldsById: {\n get: function() {\n\n /* istanbul ignore if */\n if (this._fieldsById)\n return this._fieldsById;\n\n this._fieldsById = {};\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n var field = this.fields[names[i]],\n id = field.id;\n\n /* istanbul ignore if */\n if (this._fieldsById[id])\n throw Error(\"duplicate id \" + id + \" in \" + this);\n\n this._fieldsById[id] = field;\n }\n return this._fieldsById;\n }\n },\n\n /**\n * Fields of this message as an array for iteration.\n * @name Type#fieldsArray\n * @type {Field[]}\n * @readonly\n */\n fieldsArray: {\n get: function() {\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n }\n },\n\n /**\n * Oneofs of this message as an array for iteration.\n * @name Type#oneofsArray\n * @type {OneOf[]}\n * @readonly\n */\n oneofsArray: {\n get: function() {\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n }\n },\n\n /**\n * The registered constructor, if any registered, otherwise a generic constructor.\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n * @name Type#ctor\n * @type {Constructor<{}>}\n */\n ctor: {\n get: function() {\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\n },\n set: function(ctor) {\n\n // Ensure proper prototype\n var prototype = ctor.prototype;\n if (!(prototype instanceof Message)) {\n (ctor.prototype = new Message()).constructor = ctor;\n util.merge(ctor.prototype, prototype);\n }\n\n // Classes and messages reference their reflected type\n ctor.$type = ctor.prototype.$type = this;\n\n // Mix in static methods\n util.merge(ctor, Message, true);\n\n this._ctor = ctor;\n\n // Messages have non-enumerable default values on their prototype\n var i = 0;\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\n this._fieldsArray[i].resolve(); // ensures a proper value\n\n // Messages have non-enumerable getters and setters for each virtual oneof field\n var ctorProperties = {};\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n ctorProperties[this._oneofsArray[i].resolve().name] = {\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\n };\n if (i)\n Object.defineProperties(ctor.prototype, ctorProperties);\n }\n }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"p\"], mtype.name);\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n if ((field = mtype._fieldsArray[i]).map) gen\n (\"this%s={}\", util.safeProp(field.name));\n else if (field.repeated) gen\n (\"this%s=[]\", util.safeProp(field.name));\n return gen\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\n * @property {Object.} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {Array.} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n var type = new Type(name, json.options);\n type.extensions = json.extensions;\n type.reserved = json.reserved;\n var names = Object.keys(json.fields),\n i = 0;\n for (; i < names.length; ++i)\n type.add(\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\n ? MapField.fromJSON\n : Field.fromJSON )(names[i], json.fields[names[i]])\n );\n if (json.oneofs)\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n if (json.nested)\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n var nested = json.nested[names[i]];\n type.add( // most to least likely\n ( nested.id !== undefined\n ? Field.fromJSON\n : nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n if (json.extensions && json.extensions.length)\n type.extensions = json.extensions;\n if (json.reserved && json.reserved.length)\n type.reserved = json.reserved;\n if (json.group)\n type.group = true;\n if (json.comment)\n type.comment = json.comment;\n return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"group\" , this.group || undefined,\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n var fields = this.fieldsArray, i = 0;\n while (i < fields.length)\n fields[i++].resolve();\n var oneofs = this.oneofsArray; i = 0;\n while (i < oneofs.length)\n oneofs[i++].resolve();\n return Namespace.prototype.resolveAll.call(this);\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n return this.fields[name]\n || this.oneofs && this.oneofs[name]\n || this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Field && object.extend === undefined) {\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n // The root object takes care of adding distinct sister-fields to the respective extended\n // type instead.\n\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\n if (this.isReservedId(object.id))\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\n if (this.isReservedName(object.name))\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n if (object.parent)\n object.parent.remove(object);\n this.fields[object.name] = object;\n object.message = this;\n object.onAdd(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n if (!this.oneofs)\n this.oneofs = {};\n this.oneofs[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n if (object instanceof Field && object.extend === undefined) {\n // See Type#add for the reason why extension fields are excluded here.\n\n /* istanbul ignore if */\n if (!this.fields || this.fields[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.fields[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n\n /* istanbul ignore if */\n if (!this.oneofs || this.oneofs[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.oneofs[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n // multiple times (V8, soft-deopt prototype-check).\n\n var fullName = this.fullName,\n types = [];\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n types.push(this._fieldsArray[i].resolve().resolvedType);\n\n // Replace setup methods with type-specific generated functions\n this.encode = encoder(this)({\n Writer : Writer,\n types : types,\n util : util\n });\n this.decode = decoder(this)({\n Reader : Reader,\n types : types,\n util : util\n });\n this.verify = verifier(this)({\n types : types,\n util : util\n });\n this.fromObject = converter.fromObject(this)({\n types : types,\n util : util\n });\n this.toObject = converter.toObject(this)({\n types : types,\n util : util\n });\n\n // Inject custom wrappers for common types\n var wrapper = wrappers[fullName];\n if (wrapper) {\n var originalThis = Object.create(this);\n // if (wrapper.fromObject) {\n originalThis.fromObject = this.fromObject;\n this.fromObject = wrapper.fromObject.bind(originalThis);\n // }\n // if (wrapper.toObject) {\n originalThis.toObject = this.toObject;\n this.toObject = wrapper.toObject.bind(originalThis);\n // }\n }\n\n return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof Reader))\n reader = Reader.create(reader);\n return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor} target Target constructor\n * @returns {undefined}\n * @template T extends Message\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator} Decorator function\n * @template T extends Message\n */\nType.d = function decorateType(typeName) {\n return function typeDecorator(target) {\n util.decorateType(target, typeName);\n };\n};\n","\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(\"./util\");\n\nvar s = [\n \"double\", // 0\n \"float\", // 1\n \"int32\", // 2\n \"uint32\", // 3\n \"sint32\", // 4\n \"fixed32\", // 5\n \"sfixed32\", // 6\n \"int64\", // 7\n \"uint64\", // 8\n \"sint64\", // 9\n \"fixed64\", // 10\n \"sfixed64\", // 11\n \"bool\", // 12\n \"string\", // 13\n \"bytes\" // 14\n];\n\nfunction bake(values, offset) {\n var i = 0, o = {};\n offset |= 0;\n while (i < values.length) o[s[i + offset]] = values[i++];\n return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2,\n /* bytes */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n /* double */ 0,\n /* float */ 0,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 0,\n /* sfixed32 */ 0,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 0,\n /* sfixed64 */ 0,\n /* bool */ false,\n /* string */ \"\",\n /* bytes */ util.emptyArray,\n /* message */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0\n]);\n","\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(\"./util/minimal\");\n\nvar roots = require(\"./roots\");\n\nvar Type, // cyclic\n Enum;\n\nutil.codegen = require(\"@protobufjs/codegen\");\nutil.fetch = require(\"@protobufjs/fetch\");\nutil.path = require(\"@protobufjs/path\");\n\n/**\n * Node's fs module if available.\n * @type {Object.}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n if (object) {\n var keys = Object.keys(object),\n array = new Array(keys.length),\n index = 0;\n while (index < keys.length)\n array[index] = object[keys[index++]];\n return array;\n }\n return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.} Converted object\n */\nutil.toObject = function toObject(array) {\n var object = {},\n index = 0;\n while (index < array.length) {\n var key = array[index++],\n val = array[index++];\n if (val !== undefined)\n object[key] = val;\n }\n return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n safePropQuoteRe = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n return str.substring(0, 1)\n + str.substring(1)\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n /* istanbul ignore if */\n if (ctor.$type) {\n if (typeName && ctor.$type.name !== typeName) {\n util.decorateRoot.remove(ctor.$type);\n ctor.$type.name = typeName;\n util.decorateRoot.add(ctor.$type);\n }\n return ctor.$type;\n }\n\n /* istanbul ignore next */\n if (!Type)\n Type = require(\"./type\");\n\n var type = new Type(typeName || ctor.name);\n util.decorateRoot.add(type);\n type.ctor = ctor; // sets up .encode, .decode etc.\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n /* istanbul ignore if */\n if (object.$type)\n return object.$type;\n\n /* istanbul ignore next */\n if (!Enum)\n Enum = require(\"./enum\");\n\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n util.decorateRoot.add(enm);\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n return enm;\n};\n\n\n/**\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\n * @param {Object.} dst Destination object\n * @param {string} path dot '.' delimited path of the property to set\n * @param {Object} value the value to set\n * @returns {Object.} Destination object\n */\nutil.setProperty = function setProperty(dst, path, value) {\n function setProp(dst, path, value) {\n var part = path.shift();\n if (part === \"__proto__\" || part === \"prototype\") {\n return dst;\n }\n if (path.length > 0) {\n dst[part] = setProp(dst[part] || {}, path, value);\n } else {\n var prevValue = dst[part];\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n dst[part] = value;\n }\n return dst;\n }\n\n if (typeof dst !== \"object\")\n throw TypeError(\"dst must be an object\");\n if (!path)\n throw TypeError(\"path must be specified\");\n\n path = path.split(\".\");\n return setProp(dst, path, value);\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n get: function() {\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\n }\n});\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = verifier;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\nfunction invalid(field, expected) {\n return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\n}\n\n/**\n * Generates a partial value verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\n /* eslint-disable no-unexpected-multiline */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(%s){\", ref)\n (\"default:\")\n (\"return%j\", invalid(field, \"enum value\"));\n for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\n (\"case %i:\", field.resolvedType.values[keys[j]]);\n gen\n (\"break\")\n (\"}\");\n } else {\n gen\n (\"{\")\n (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\n (\"if(e)\")\n (\"return%j+e\", field.name + \".\")\n (\"}\");\n }\n } else {\n switch (field.type) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.isInteger(%s))\", ref)\n (\"return%j\", invalid(field, \"integer\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\n (\"return%j\", invalid(field, \"integer|Long\"));\n break;\n case \"float\":\n case \"double\": gen\n (\"if(typeof %s!==\\\"number\\\")\", ref)\n (\"return%j\", invalid(field, \"number\"));\n break;\n case \"bool\": gen\n (\"if(typeof %s!==\\\"boolean\\\")\", ref)\n (\"return%j\", invalid(field, \"boolean\"));\n break;\n case \"string\": gen\n (\"if(!util.isString(%s))\", ref)\n (\"return%j\", invalid(field, \"string\"));\n break;\n case \"bytes\": gen\n (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\n (\"return%j\", invalid(field, \"buffer\"));\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a partial key verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyKey(gen, field, ref) {\n /* eslint-disable no-unexpected-multiline */\n switch (field.keyType) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.key32Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"integer key\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\n (\"return%j\", invalid(field, \"integer|Long key\"));\n break;\n case \"bool\": gen\n (\"if(!util.key2Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"boolean key\"));\n break;\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a verifier specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction verifier(mtype) {\n /* eslint-disable no-unexpected-multiline */\n\n var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\n (\"if(typeof m!==\\\"object\\\"||m===null)\")\n (\"return%j\", \"object expected\");\n var oneofs = mtype.oneofsArray,\n seenFirstField = {};\n if (oneofs.length) gen\n (\"var p={}\");\n\n for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n ref = \"m\" + util.safeProp(field.name);\n\n if (field.optional) gen\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\n\n // map fields\n if (field.map) { gen\n (\"if(!util.isObject(%s))\", ref)\n (\"return%j\", invalid(field, \"object\"))\n (\"var k=Object.keys(%s)\", ref)\n (\"for(var i=0;i}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(\"./message\");\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n fromObject: function(object) {\n\n // unwrap value type if mapped\n if (object && object[\"@type\"]) {\n // Only use fully qualified type name after the last '/'\n var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type) {\n // type_url does not accept leading \".\"\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\n object[\"@type\"].slice(1) : object[\"@type\"];\n // type_url prefix is optional, but path seperator is required\n if (type_url.indexOf(\"/\") === -1) {\n type_url = \"/\" + type_url;\n }\n return this.create({\n type_url: type_url,\n value: type.encode(type.fromObject(object)).finish()\n });\n }\n }\n\n return this.fromObject(object);\n },\n\n toObject: function(message, options) {\n\n // Default prefix\n var googleApi = \"type.googleapis.com/\";\n var prefix = \"\";\n var name = \"\";\n\n // decode value if requested and unmapped\n if (options && options.json && message.type_url && message.value) {\n // Only use fully qualified type name after the last '/'\n name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n // Separate the prefix used\n prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type)\n message = type.decode(message.value);\n }\n\n // wrap value if unmapped\n if (!(message instanceof this.ctor) && message instanceof Message) {\n var object = message.$type.toObject(message, options);\n var messageName = message.$type.fullName[0] === \".\" ?\n message.$type.fullName.slice(1) : message.$type.fullName;\n // Default to type.googleapis.com prefix if no prefix is used\n if (prefix === \"\") {\n prefix = googleApi;\n }\n name = prefix + messageName;\n object[\"@type\"] = name;\n return object;\n }\n\n return this.toObject(message, options);\n }\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3{var e={296:(e,t,r)=>{var o=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,s=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,l=\"object\"==typeof self&&self&&self.Object===Object&&self,a=s||l||Function(\"return this\")(),f=Object.prototype.toString,p=Math.max,y=Math.min,b=function(){return a.Date.now()};function d(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function h(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==f.call(e)}(e))return NaN;if(d(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=d(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var r=i.test(e);return r||c.test(e)?u(e.slice(2),r?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var o,n,i,c,u,s,l=0,a=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var r=o,i=n;return o=n=void 0,l=t,c=e.apply(i,r)}function O(e){var r=e-s;return void 0===s||r>=t||r<0||f&&e-l>=i}function w(){var e=b();if(O(e))return g(e);u=setTimeout(w,function(e){var r=t-(e-s);return f?y(r,i-(e-l)):r}(e))}function g(e){return u=void 0,v&&o?m(e):(o=n=void 0,c)}function P(){var e=b(),r=O(e);if(o=arguments,n=this,s=e,r){if(void 0===u)return function(e){return l=e,u=setTimeout(w,t),a?m(e):c}(s);if(f)return u=setTimeout(w,t),m(s)}return void 0===u&&(u=setTimeout(w,t)),c}return t=h(t)||0,d(r)&&(a=!!r.leading,i=(f=\"maxWait\"in r)?p(h(r.maxWait)||0,t):i,v=\"trailing\"in r?!!r.trailing:v),P.cancel=function(){void 0!==u&&clearTimeout(u),l=0,o=s=n=u=void 0},P.flush=function(){return void 0===u?c:g(b())},P}},96:(e,t,r)=>{var o=\"Expected a function\",n=NaN,i=\"[object Symbol]\",c=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,a=parseInt,f=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,p=\"object\"==typeof self&&self&&self.Object===Object&&self,y=f||p||Function(\"return this\")(),b=Object.prototype.toString,d=Math.max,h=Math.min,v=function(){return y.Date.now()};function m(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function O(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&b.call(e)==i}(e))return n;if(m(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(c,\"\");var r=s.test(e);return r||l.test(e)?a(e.slice(2),r?2:8):u.test(e)?n:+e}e.exports=function(e,t,r){var n=!0,i=!0;if(\"function\"!=typeof e)throw new TypeError(o);return m(r)&&(n=\"leading\"in r?!!r.leading:n,i=\"trailing\"in r?!!r.trailing:i),function(e,t,r){var n,i,c,u,s,l,a=0,f=!1,p=!1,y=!0;if(\"function\"!=typeof e)throw new TypeError(o);function b(t){var r=n,o=i;return n=i=void 0,a=t,u=e.apply(o,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||p&&e-a>=c}function g(){var e=v();if(w(e))return P(e);s=setTimeout(g,function(e){var r=t-(e-l);return p?h(r,c-(e-a)):r}(e))}function P(e){return s=void 0,y&&n?b(e):(n=i=void 0,u)}function j(){var e=v(),r=w(e);if(n=arguments,i=this,l=e,r){if(void 0===s)return function(e){return a=e,s=setTimeout(g,t),f?b(e):u}(l);if(p)return s=setTimeout(g,t),b(l)}return void 0===s&&(s=setTimeout(g,t)),u}return t=O(t)||0,m(r)&&(f=!!r.leading,c=(p=\"maxWait\"in r)?d(O(r.maxWait)||0,t):c,y=\"trailing\"in r?!!r.trailing:y),j.cancel=function(){void 0!==s&&clearTimeout(s),a=0,n=l=i=s=void 0},j.flush=function(){return void 0===s?u:P(v())},j}(e,t,{leading:n,maxWait:t,trailing:i})}},703:(e,t,r)=>{\"use strict\";var o=r(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,i,c){if(c!==o){var u=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw u.name=\"Invariant Violation\",u}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};(()=>{\"use strict\";r.r(o),r.d(o,{LazyLoadComponent:()=>Y,LazyLoadImage:()=>ne,trackWindowScroll:()=>D});const e=require(\"react\");var t=r.n(e),n=r(697);function i(){return\"undefined\"!=typeof window&&\"IntersectionObserver\"in window&&\"isIntersecting\"in window.IntersectionObserverEntry.prototype}function c(e){return c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c(e)}function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(e,t,r){return(t=a(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props.scrollPosition,t=this.placeholder.getBoundingClientRect(),r=this.placeholder.style,o=parseInt(r.getPropertyValue(\"margin-left\"),10)||0,n=parseInt(r.getPropertyValue(\"margin-top\"),10)||0;return{bottom:e.y+t.bottom+n,left:e.x+t.left+o,right:e.x+t.right+o,top:e.y+t.top+n}}},{key:\"isPlaceholderInViewport\",value:function(){if(\"undefined\"==typeof window||!this.placeholder)return!1;var e=this.props,t=e.scrollPosition,r=e.threshold,o=this.getPlaceholderBoundingBox(t),n=t.y+window.innerHeight,i=t.x,c=t.x+window.innerWidth,u=t.y;return Boolean(u-r<=o.bottom&&n+r>=o.top&&i-r<=o.right&&c+r>=o.left)}},{key:\"updateVisibility\",value:function(){this.isPlaceholderInViewport()&&this.props.onVisible()}},{key:\"render\",value:function(){var e=this,r=this.props,o=r.className,n=r.height,i=r.placeholder,c=r.style,l=r.width;if(i&&\"function\"!=typeof i.type)return t().cloneElement(i,{ref:function(t){return e.placeholder=t}});var a=function(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,T)),n=this.useIntersectionObserver?null:this.state.scrollPosition;return t().createElement(e,S({forwardRef:this.baseComponentRef,scrollPosition:n},o))}}])&&E(o.prototype,n),Object.defineProperty(o,\"prototype\",{writable:!1}),l}(t().Component);return r.propTypes={delayMethod:n.PropTypes.oneOf([\"debounce\",\"throttle\"]),delayTime:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool},r.defaultProps={delayMethod:\"throttle\",delayTime:300,useIntersectionObserver:!0},r};function C(e){return C=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},C(e)}function B(e,t){for(var r=0;r=0&&Number.isFinite(n.y)&&n.y>=0),t}return r=s,(o=[{key:\"componentDidUpdate\",value:function(e,t){t.visible!==this.state.visible&&this.props.afterLoad()}},{key:\"onVisible\",value:function(){this.props.beforeLoad(),this.setState({visible:!0})}},{key:\"render\",value:function(){if(this.state.visible)return this.props.children;var e=this.props,r=e.className,o=e.delayMethod,n=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.width;return this.isScrollTracked||f&&i()?t().createElement(h,{className:r,height:c,onVisible:this.onVisible,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,width:p}):t().createElement(W,{className:r,delayMethod:o,delayTime:n,height:c,onVisible:this.onVisible,placeholder:u,style:l,threshold:a,width:p})}}])&&$(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),s}(t().Component);H.propTypes={afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool},H.defaultProps={afterLoad:function(){return{}},beforeLoad:function(){return{}},useIntersectionObserver:!0,visibleByDefault:!1};const Y=H;function X(e){return X=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},X(e)}var A=[\"afterLoad\",\"beforeLoad\",\"delayMethod\",\"delayTime\",\"effect\",\"placeholder\",\"placeholderSrc\",\"scrollPosition\",\"threshold\",\"useIntersectionObserver\",\"visibleByDefault\",\"wrapperClassName\",\"wrapperProps\"];function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function J(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,A));return t().createElement(\"img\",Q({},r,{onLoad:this.onImageLoad()}))}},{key:\"getLazyLoadImage\",value:function(){var e=this.props,r=e.beforeLoad,o=e.className,n=e.delayMethod,i=e.delayTime,c=e.height,u=e.placeholder,s=e.scrollPosition,l=e.style,a=e.threshold,f=e.useIntersectionObserver,p=e.visibleByDefault,y=e.width;return t().createElement(Y,{beforeLoad:r,className:o,delayMethod:n,delayTime:i,height:c,placeholder:u,scrollPosition:s,style:l,threshold:a,useIntersectionObserver:f,visibleByDefault:p,width:y},this.getImg())}},{key:\"getWrappedLazyLoadImage\",value:function(e){var r=this.props,o=r.effect,n=r.height,i=r.placeholderSrc,c=r.width,u=r.wrapperClassName,s=r.wrapperProps,l=this.state.loaded,a=l?\" lazy-load-image-loaded\":\"\",f=l||!i?{}:{backgroundImage:\"url(\".concat(i,\")\"),backgroundSize:\"100% 100%\"};return t().createElement(\"span\",Q({className:u+\" lazy-load-image-background \"+o+a,style:J(J({},f),{},{color:\"transparent\",display:\"inline-block\",height:n,width:c})},s),e)}},{key:\"render\",value:function(){var e=this.props,t=e.effect,r=e.placeholderSrc,o=e.visibleByDefault,n=e.wrapperClassName,i=e.wrapperProps,c=this.getLazyLoadImage();return(t||r)&&!o||n||i?this.getWrappedLazyLoadImage(c):c}}])&&Z(r.prototype,o),Object.defineProperty(r,\"prototype\",{writable:!1}),u}(t().Component);oe.propTypes={onLoad:n.PropTypes.func,afterLoad:n.PropTypes.func,beforeLoad:n.PropTypes.func,delayMethod:n.PropTypes.string,delayTime:n.PropTypes.number,effect:n.PropTypes.string,placeholderSrc:n.PropTypes.string,threshold:n.PropTypes.number,useIntersectionObserver:n.PropTypes.bool,visibleByDefault:n.PropTypes.bool,wrapperClassName:n.PropTypes.string,wrapperProps:n.PropTypes.object},oe.defaultProps={onLoad:function(){},afterLoad:function(){return{}},beforeLoad:function(){return{}},delayMethod:\"throttle\",delayTime:300,effect:\"\",placeholderSrc:null,threshold:100,useIntersectionObserver:!0,visibleByDefault:!1,wrapperClassName:\"\"};const ne=oe})(),module.exports=o})();","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict'\n\nfunction isFunction (funktion) {\n return typeof funktion === 'function'\n}\n\n// Default to complaining loudly when things don't go according to plan.\nvar logger = console.error.bind(console)\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty (obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name)\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n })\n}\n\n// Keep initialization idempotent.\nfunction shimmer (options) {\n if (options && options.logger) {\n if (!isFunction(options.logger)) logger(\"new logger isn't a function, not replacing\")\n else logger = options.logger\n }\n}\n\nfunction wrap (nodule, name, wrapper) {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + name + ' to wrap')\n return\n }\n\n if (!wrapper) {\n logger('no wrapper function')\n logger((new Error()).stack)\n return\n }\n\n if (!isFunction(nodule[name]) || !isFunction(wrapper)) {\n logger('original object and wrapper must be functions')\n return\n }\n\n var original = nodule[name]\n var wrapped = wrapper(original, name)\n\n defineProperty(wrapped, '__original', original)\n defineProperty(wrapped, '__unwrap', function () {\n if (nodule[name] === wrapped) defineProperty(nodule, name, original)\n })\n defineProperty(wrapped, '__wrapped', true)\n\n defineProperty(nodule, name, wrapped)\n return wrapped\n}\n\nfunction massWrap (nodules, names, wrapper) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n wrap(nodule, name, wrapper)\n })\n })\n}\n\nfunction unwrap (nodule, name) {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.')\n logger((new Error()).stack)\n return\n }\n\n if (!nodule[name].__unwrap) {\n logger('no original to unwrap to -- has ' + name + ' already been unwrapped?')\n } else {\n return nodule[name].__unwrap()\n }\n}\n\nfunction massUnwrap (nodules, names) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n unwrap(nodule, name)\n })\n })\n}\n\nshimmer.wrap = wrap\nshimmer.massWrap = massWrap\nshimmer.unwrap = unwrap\nshimmer.massUnwrap = massUnwrap\n\nmodule.exports = shimmer\n","import type { Declaration } from 'inline-style-parser';\nimport parse from 'inline-style-parser';\n\nexport { Declaration };\n\ninterface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.40\n Copyright © 2012-2024 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.40',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS',\n SUFFIX_BROWSER = ' Browser';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /(?:honor)([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i, // IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(imo) (tab \\w+)/i, // IMO\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","'use strict';\n/**\n * @license Angular v\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\nconst global = globalThis;\n// __Zone_symbol_prefix global can be used to override the default zone\n// symbol prefix with a custom one if needed.\nfunction __symbol__(name) {\n const symbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__';\n return symbolPrefix + name;\n}\nfunction initZone() {\n const performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n class ZoneImpl {\n // tslint:disable-next-line:require-internal-with-underscore\n static { this.__symbol__ = __symbol__; }\n static assertZonePatched() {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n }\n static get root() {\n let zone = ZoneImpl.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n }\n static get current() {\n return _currentZoneFrame.zone;\n }\n static get currentTask() {\n return _currentTask;\n }\n // tslint:disable-next-line:require-internal-with-underscore\n static __load_patch(name, fn, ignoreDuplicate = false) {\n if (patches.hasOwnProperty(name)) {\n // `checkDuplicate` option is defined from global variable\n // so it works for all modules.\n // `ignoreDuplicate` can work for the specified module\n const checkDuplicate = global[__symbol__('forceDuplicateZoneCheck')] === true;\n if (!ignoreDuplicate && checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n const perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, ZoneImpl, _api);\n performanceMeasure(perfName, perfName);\n }\n }\n get parent() {\n return this._parent;\n }\n get name() {\n return this._name;\n }\n constructor(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = (zoneSpec && zoneSpec.properties) || {};\n this._zoneDelegate = new _ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n get(key) {\n const zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n }\n getZoneWith(key) {\n let current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n }\n fork(zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n }\n wrap(callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n const _callback = this._zoneDelegate.intercept(this, callback, source);\n const zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n }\n run(callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runGuarded(callback, applyThis = null, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runTask(task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name +\n '; Execution: ' +\n this.name +\n ')');\n }\n const zoneTask = task;\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n const { type, data: { isPeriodic = false, isRefreshable = false } = {} } = task;\n if (task.state === notScheduled && (type === eventTask || type === macroTask)) {\n return;\n }\n const reEntryGuard = task.state != running;\n reEntryGuard && zoneTask._transitionTo(running, scheduled);\n const previousTask = _currentTask;\n _currentTask = zoneTask;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (type == macroTask && task.data && !isPeriodic && !isRefreshable) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, zoneTask, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n const state = task.state;\n if (state !== notScheduled && state !== unknown) {\n if (type == eventTask || isPeriodic || (isRefreshable && state === scheduling)) {\n reEntryGuard && zoneTask._transitionTo(scheduled, running, scheduling);\n }\n else {\n const zoneDelegates = zoneTask._zoneDelegates;\n this._updateTaskCount(zoneTask, -1);\n reEntryGuard && zoneTask._transitionTo(notScheduled, running, notScheduled);\n if (isRefreshable) {\n zoneTask._zoneDelegates = zoneDelegates;\n }\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n }\n scheduleTask(task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n let newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n const zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n }\n scheduleMicroTask(source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n }\n scheduleMacroTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n }\n scheduleEventTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n }\n cancelTask(task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name +\n '; Execution: ' +\n this.name +\n ')');\n if (task.state !== scheduled && task.state !== running) {\n return;\n }\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = -1;\n return task;\n }\n _updateTaskCount(task, count) {\n const zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (let i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n }\n }\n const DELEGATE_ZS = {\n name: '',\n onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState),\n onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task),\n onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs),\n onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task),\n };\n class _ZoneDelegate {\n get zone() {\n return this._zone;\n }\n constructor(zone, parentDelegate, zoneSpec) {\n this._taskCounts = {\n 'microTask': 0,\n 'macroTask': 0,\n 'eventTask': 0,\n };\n this._zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone =\n zoneSpec && (zoneSpec.onFork ? this._zone : parentDelegate._forkCurrZone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this._zone : parentDelegate._interceptCurrZone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone =\n zoneSpec && (zoneSpec.onInvoke ? this._zone : parentDelegate._invokeCurrZone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this._zone : parentDelegate._handleErrorCurrZone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt =\n zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this._zone : parentDelegate._scheduleTaskCurrZone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this._zone : parentDelegate._invokeTaskCurrZone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this._zone : parentDelegate._cancelTaskCurrZone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n const parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = this._zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this._zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this._zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this._zone;\n }\n }\n }\n fork(targetZone, zoneSpec) {\n return this._forkZS\n ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec)\n : new ZoneImpl(targetZone, zoneSpec);\n }\n intercept(targetZone, callback, source) {\n return this._interceptZS\n ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source)\n : callback;\n }\n invoke(targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS\n ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source)\n : callback.apply(applyThis, applyArgs);\n }\n handleError(targetZone, error) {\n return this._handleErrorZS\n ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error)\n : true;\n }\n scheduleTask(targetZone, task) {\n let returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n }\n invokeTask(targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS\n ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs)\n : task.callback.apply(applyThis, applyArgs);\n }\n cancelTask(targetZone, task) {\n let value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n }\n hasTask(targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _updateTaskCount(type, count) {\n const counts = this._taskCounts;\n const prev = counts[type];\n const next = (counts[type] = prev + count);\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n const isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type,\n };\n this.hasTask(this._zone, isEmpty);\n }\n }\n }\n class ZoneTask {\n constructor(type, source, callback, options, scheduleFn, cancelFn) {\n // tslint:disable-next-line:require-internal-with-underscore\n this._zone = null;\n this.runCount = 0;\n // tslint:disable-next-line:require-internal-with-underscore\n this._zoneDelegates = null;\n // tslint:disable-next-line:require-internal-with-underscore\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n if (!callback) {\n throw new Error('callback is not defined');\n }\n this.callback = callback;\n const self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n static invokeTask(task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n }\n get zone() {\n return this._zone;\n }\n get state() {\n return this._state;\n }\n cancelScheduleRequest() {\n this._transitionTo(notScheduled, scheduling);\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _transitionTo(toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? \" or '\" + fromState2 + \"'\" : ''}, was '${this._state}'.`);\n }\n }\n toString() {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n }\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n toJSON() {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount,\n };\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const symbolSetTimeout = __symbol__('setTimeout');\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n let _microTaskQueue = [];\n let _isDrainingMicrotaskQueue = false;\n let nativeMicroTaskQueuePromise;\n function nativeScheduleMicroTask(func) {\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n let nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, func);\n }\n else {\n global[symbolSetTimeout](func, 0);\n }\n }\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n nativeScheduleMicroTask(drainMicroTaskQueue);\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n const queue = _microTaskQueue;\n _microTaskQueue = [];\n for (let i = 0; i < queue.length; i++) {\n const task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const NO_ZONE = { name: 'NO ZONE' };\n const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n const patches = {};\n const _api = {\n symbol: __symbol__,\n currentZoneFrame: () => _currentZoneFrame,\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: () => !ZoneImpl[__symbol__('ignoreConsoleErrorUncaughtError')],\n patchEventTarget: () => [],\n patchOnProperties: noop,\n patchMethod: () => noop,\n bindArguments: () => [],\n patchThen: () => noop,\n patchMacroTask: () => noop,\n patchEventPrototype: () => noop,\n isIEOrEdge: () => false,\n getGlobalObjects: () => undefined,\n ObjectDefineProperty: () => noop,\n ObjectGetOwnPropertyDescriptor: () => undefined,\n ObjectCreate: () => undefined,\n ArraySlice: () => [],\n patchClass: () => noop,\n wrapWithCurrentZone: () => noop,\n filterProperties: () => [],\n attachOriginToPatched: () => noop,\n _redefineProperty: () => noop,\n patchCallbacks: () => noop,\n nativeScheduleMicroTask: nativeScheduleMicroTask,\n };\n let _currentZoneFrame = { parent: null, zone: new ZoneImpl(null, null) };\n let _currentTask = null;\n let _numberOfNestedTaskFrames = 0;\n function noop() { }\n performanceMeasure('Zone', 'Zone');\n return ZoneImpl;\n}\n\nfunction loadZone() {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n const global = globalThis;\n const checkDuplicate = global[__symbol__('forceDuplicateZoneCheck')] === true;\n if (global['Zone'] && (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function')) {\n throw new Error('Zone already loaded.');\n }\n // Initialize global `Zone` constant.\n global['Zone'] ??= initZone();\n return global['Zone'];\n}\n\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nconst ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nconst ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nconst ObjectCreate = Object.create;\n/** Array.prototype.slice */\nconst ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nconst ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nconst REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nconst ZONE_SYMBOL_ADD_EVENT_LISTENER = __symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nconst ZONE_SYMBOL_REMOVE_EVENT_LISTENER = __symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nconst TRUE_STR = 'true';\n/** false string const */\nconst FALSE_STR = 'false';\n/** Zone symbol prefix string const. */\nconst ZONE_SYMBOL_PREFIX = __symbol__('');\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nconst zoneSymbol = __symbol__;\nconst isWindowExists = typeof window !== 'undefined';\nconst internalWindow = isWindowExists ? window : undefined;\nconst _global = (isWindowExists && internalWindow) || globalThis;\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nfunction bindArguments(args, source) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n const source = prototype.constructor['name'];\n for (let i = 0; i < fnNames.length; i++) {\n const name = fnNames[i];\n const delegate = prototype[name];\n if (delegate) {\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name);\n if (!isPropertyWritable(prototypeDesc)) {\n continue;\n }\n prototype[name] = ((delegate) => {\n const patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nconst isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isNode = !('nw' in _global) &&\n typeof _global.process !== 'undefined' &&\n _global.process.toString() === '[object process]';\nconst isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isMix = typeof _global.process !== 'undefined' &&\n _global.process.toString() === '[object process]' &&\n !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nconst zoneSymbolEventNames$1 = {};\nconst enableBeforeunloadSymbol = zoneSymbol('enable_beforeunload');\nconst wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n let eventNameSymbol = zoneSymbolEventNames$1[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n const target = this || event.target || _global;\n const listener = target[eventNameSymbol];\n let result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signature\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n const errorEvent = event;\n result =\n listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (\n // https://github.com/angular/angular/issues/47579\n // https://www.w3.org/TR/2011/WD-html5-20110525/history.html#beforeunloadevent\n // This is the only specific case we should check for. The spec defines that the\n // `returnValue` attribute represents the message to show the user. When the event\n // is created, this attribute must be set to the empty string.\n event.type === 'beforeunload' &&\n // To prevent any breaking changes resulting from this change, given that\n // it was already causing a significant number of failures in G3, we have hidden\n // that behavior behind a global configuration flag. Consumers can enable this\n // flag explicitly if they want the `beforeunload` event to be handled as defined\n // in the specification.\n _global[enableBeforeunloadSymbol] &&\n // The IDL event definition is `attribute DOMString returnValue`, so we check whether\n // `typeof result` is a string.\n typeof result === 'string') {\n event.returnValue = result;\n }\n else if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n let desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n const originalDescGet = desc.get;\n const originalDescSet = desc.set;\n // slice(2) cuz 'onclick' -> 'click', etc\n const eventName = prop.slice(2);\n let eventNameSymbol = zoneSymbolEventNames$1[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n const previousValue = target[eventNameSymbol];\n if (typeof previousValue === 'function') {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n originalDescSet && originalDescSet.call(target, null);\n target[eventNameSymbol] = newValue;\n if (typeof newValue === 'function') {\n target.addEventListener(eventName, wrapFn, false);\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n const listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n let value = originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (let i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n const onProperties = [];\n for (const prop in obj) {\n if (prop.slice(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (let j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nconst originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n const OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n const a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n const instance = new OriginalClass(function () { });\n let prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n },\n });\n }\n })(prop);\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n let proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n const delegateName = zoneSymbol(name);\n let delegate = null;\n if (proto && (!(delegate = proto[delegateName]) || !proto.hasOwnProperty(delegateName))) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n const patchDelegate = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n let setNative = null;\n function scheduleTask(task) {\n const data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, (delegate) => function (self, args) {\n const meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n });\n}\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nlet isDetectedIEOrEdge = false;\nlet ieOrEdge = false;\nfunction isIE() {\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n }\n catch (error) { }\n return ieOrEdge;\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\n// Note that passive event listeners are now supported by most modern browsers,\n// including Chrome, Firefox, Safari, and Edge. There's a pending change that\n// would remove support for legacy browsers by zone.js. Removing `passiveSupported`\n// from the codebase will reduce the final code size for existing apps that still use zone.js.\nlet passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n },\n });\n // Note: We pass the `options` object as the event handler too. This is not compatible with the\n // signature of `addEventListener` or `removeEventListener` but enables us to remove the handler\n // without an actual handler.\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nconst OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true,\n};\nconst zoneSymbolEventNames = {};\nconst globalSources = {};\nconst EVENT_NAME_SYMBOL_REGX = new RegExp('^' + ZONE_SYMBOL_PREFIX + '(\\\\w+)(true|false)$');\nconst IMMEDIATE_PROPAGATION_SYMBOL = zoneSymbol('propagationStopped');\nfunction prepareEventNames(eventName, eventNameToString) {\n const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n}\nfunction patchEventTarget(_global, api, apis, patchOptions) {\n const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n const PREPEND_EVENT_LISTENER = 'prependListener';\n const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n const invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n const delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = (event) => delegate.handleEvent(event);\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n // need to try/catch error here, otherwise, the error in one event listener\n // will break the executions of the other event listeners. Also error will\n // not remove the event listener when `once` options is true.\n let error;\n try {\n task.invoke(task, target, [event]);\n }\n catch (err) {\n error = err;\n }\n const options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n const delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options);\n }\n return error;\n };\n function globalCallback(context, event, isCapture) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = context || event.target || _global;\n const tasks = target[zoneSymbolEventNames[event.type][isCapture ? TRUE_STR : FALSE_STR]];\n if (tasks) {\n const errors = [];\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n const err = invokeTask(tasks[0], target, event);\n err && errors.push(err);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n const err = invokeTask(copyTasks[i], target, event);\n err && errors.push(err);\n }\n }\n // Since there is only one error, we don't need to schedule microTask\n // to throw the error.\n if (errors.length === 1) {\n throw errors[0];\n }\n else {\n for (let i = 0; i < errors.length; i++) {\n const err = errors[i];\n api.nativeScheduleMicroTask(() => {\n throw err;\n });\n }\n }\n }\n }\n // global shared zoneAwareCallback to handle all event callback with capture = false\n const globalZoneAwareCallback = function (event) {\n return globalCallback(this, event, false);\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n const globalZoneAwareCaptureCallback = function (event) {\n return globalCallback(this, event, true);\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n let useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n const validateHandler = patchOptions && patchOptions.vh;\n let checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n let returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n let proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n const eventNameToString = patchOptions && patchOptions.eventNameToString;\n // We use a shared global `taskData` to pass data for `scheduleEventTask`,\n // eliminating the need to create a new object solely for passing data.\n // WARNING: This object has a static lifetime, meaning it is not created\n // each time `addEventListener` is called. It is instantiated only once\n // and captured by reference inside the `addEventListener` and\n // `removeEventListener` functions. Do not add any new properties to this\n // object, as doing so would necessitate maintaining the information\n // between `addEventListener` calls.\n const taskData = {};\n const nativeAddEventListener = (proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]);\n const nativeRemoveEventListener = (proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER]);\n const nativeListeners = (proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER]);\n const nativeRemoveAllListeners = (proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]);\n let nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n /**\n * This util function will build an option object with passive option\n * to handle all possible input from the user.\n */\n function buildEventListenerOptions(options, passive) {\n if (!passiveSupported && typeof options === 'object' && options) {\n // doesn't support passive but user want to pass an object as options.\n // this will not work on some old browser, so we just pass a boolean\n // as useCapture parameter\n return !!options.capture;\n }\n if (!passiveSupported || !passive) {\n return options;\n }\n if (typeof options === 'boolean') {\n return { capture: options, passive: true };\n }\n if (!options) {\n return { passive: true };\n }\n if (typeof options === 'object' && options.passive !== false) {\n return { ...options, passive: true };\n }\n return options;\n }\n const customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n /**\n * In the context of events and listeners, this function will be\n * called at the end by `cancelTask`, which, in turn, calls `task.cancelFn`.\n * Cancelling a task is primarily used to remove event listeners from\n * the task target.\n */\n const customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n const symbolEventNames = zoneSymbolEventNames[task.eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (task.removeAbortListener) {\n task.removeAbortListener();\n task.removeAbortListener = null;\n }\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n const customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n const compareTaskCallbackVsDelegate = function (task, delegate) {\n const typeOfDelegate = typeof delegate;\n return ((typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate));\n };\n const compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate;\n const unpatchedEvents = Zone[zoneSymbol('UNPATCHED_EVENTS')];\n const passiveEvents = _global[zoneSymbol('PASSIVE_EVENTS')];\n function copyEventListenerOptions(options) {\n if (typeof options === 'object' && options !== null) {\n // We need to destructure the target `options` object since it may\n // be frozen or sealed (possibly provided implicitly by a third-party\n // library), or its properties may be readonly.\n const newOptions = { ...options };\n // The `signal` option was recently introduced, which caused regressions in\n // third-party scenarios where `AbortController` was directly provided to\n // `addEventListener` as options. For instance, in cases like\n // `document.addEventListener('keydown', callback, abortControllerInstance)`,\n // which is valid because `AbortController` includes a `signal` getter, spreading\n // `{...options}` wouldn't copy the `signal`. Additionally, using `Object.create`\n // isn't feasible since `AbortController` is a built-in object type, and attempting\n // to create a new object directly with it as the prototype might result in\n // unexpected behavior.\n if (options.signal) {\n newOptions.signal = options.signal;\n }\n return newOptions;\n }\n return options;\n }\n const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) {\n return function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n let delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n let isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n const passive = passiveSupported && !!passiveEvents && passiveEvents.indexOf(eventName) !== -1;\n const options = copyEventListenerOptions(buildEventListenerOptions(arguments[2], passive));\n const signal = options?.signal;\n if (signal?.aborted) {\n // the signal is an aborted one, just return without attaching the event listener.\n return;\n }\n if (unpatchedEvents) {\n // check unpatched list\n for (let i = 0; i < unpatchedEvents.length; i++) {\n if (eventName === unpatchedEvents[i]) {\n if (passive) {\n return nativeListener.call(target, eventName, delegate, options);\n }\n else {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n }\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const once = options && typeof options === 'object' ? options.once : false;\n const zone = Zone.current;\n let symbolEventNames = zoneSymbolEventNames[eventName];\n if (!symbolEventNames) {\n prepareEventNames(eventName, eventNameToString);\n symbolEventNames = zoneSymbolEventNames[eventName];\n }\n const symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n let existingTasks = target[symbolEventName];\n let isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (let i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n let source;\n const constructorName = target.constructor['name'];\n const targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source =\n constructorName +\n addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // In the code below, `options` should no longer be reassigned; instead, it\n // should only be mutated. This is because we pass that object to the native\n // `addEventListener`.\n // It's generally recommended to use the same object reference for options.\n // This ensures consistency and avoids potential issues.\n taskData.options = options;\n if (once) {\n // When using `addEventListener` with the `once` option, we don't pass\n // the `once` option directly to the native `addEventListener` method.\n // Instead, we keep the `once` setting and handle it ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n if (signal) {\n // When using `addEventListener` with the `signal` option, we don't pass\n // the `signal` option directly to the native `addEventListener` method.\n // Instead, we keep the `signal` setting and handle it ourselves.\n taskData.options.signal = undefined;\n }\n // The `scheduleEventTask` function will ultimately call `customScheduleGlobal`,\n // which in turn calls the native `addEventListener`. This is why `taskData.options`\n // is updated before scheduling the task, as `customScheduleGlobal` uses\n // `taskData.options` to pass it to the native `addEventListener`.\n const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n if (signal) {\n // after task is scheduled, we need to store the signal back to task.options\n taskData.options.signal = signal;\n // Wrapping `task` in a weak reference would not prevent memory leaks. Weak references are\n // primarily used for preventing strong references cycles. `onAbort` is always reachable\n // as it's an event listener, so its closure retains a strong reference to the `task`.\n const onAbort = () => task.zone.cancelTask(task);\n nativeListener.call(signal, 'abort', onAbort, { once: true });\n // We need to remove the `abort` listener when the event listener is going to be removed,\n // as it creates a closure that captures `task`. This closure retains a reference to the\n // `task` object even after it goes out of scope, preventing `task` from being garbage\n // collected.\n task.removeAbortListener = () => signal.removeEventListener('abort', onAbort);\n }\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n taskData.options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const options = arguments[2];\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && target[symbolEventName];\n // `existingTasks` may not exist if the `addEventListener` was called before\n // it was patched by zone.js. Please refer to the attached issue for\n // clarification, particularly after the `if` condition, before calling\n // the native `removeEventListener`.\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n // in the target, we have an event listener which is added by on_property\n // such as target.onclick = function() {}, so we need to clear this internal\n // property too if all delegates with capture=false were removed\n // https:// github.com/angular/angular/issues/31643\n // https://github.com/angular/angular/issues/54581\n if (!capture && typeof eventName === 'string') {\n const onPropertySymbol = ZONE_SYMBOL_PREFIX + 'ON_PROPERTY' + eventName;\n target[onPropertySymbol] = null;\n }\n }\n // In all other conditions, when `addEventListener` is called after being\n // patched by zone.js, we would always find an event task on the `EventTarget`.\n // This will trigger `cancelFn` on the `existingTask`, leading to `customCancelGlobal`,\n // which ultimately removes an event listener and cleans up the abort listener\n // (if an `AbortSignal` was provided when scheduling a task).\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // https://github.com/angular/zone.js/issues/930\n // We may encounter a situation where the `addEventListener` was\n // called on the event target before zone.js is loaded, resulting\n // in no task being stored on the event target due to its invocation\n // of the native implementation. In this scenario, we simply need to\n // invoke the native `removeEventListener`.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const listeners = [];\n const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (let i = 0; i < tasks.length; i++) {\n const task = tasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (!eventName) {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n if (symbolEventNames) {\n const symbolEventName = symbolEventNames[FALSE_STR];\n const symbolCaptureEventName = symbolEventNames[TRUE_STR];\n const tasks = target[symbolEventName];\n const captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n const removeTasks = tasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n const removeTasks = captureTasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n let results = [];\n for (let i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n if (!eventName) {\n const foundTasks = [];\n for (let prop in target) {\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n const tasks = target[prop];\n if (tasks) {\n for (let i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n }\n let symbolEventName = zoneSymbolEventNames[eventName];\n if (!symbolEventName) {\n prepareEventNames(eventName);\n symbolEventName = zoneSymbolEventNames[eventName];\n }\n const captureFalseTasks = target[symbolEventName[FALSE_STR]];\n const captureTrueTasks = target[symbolEventName[TRUE_STR]];\n if (!captureFalseTasks) {\n return captureTrueTasks ? captureTrueTasks.slice() : [];\n }\n else {\n return captureTrueTasks\n ? captureFalseTasks.concat(captureTrueTasks)\n : captureFalseTasks.slice();\n }\n}\nfunction patchEventPrototype(global, api) {\n const Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n });\n }\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nfunction patchQueueMicrotask(global, api) {\n api.patchMethod(global, 'queueMicrotask', (delegate) => {\n return function (self, args) {\n Zone.current.scheduleMicroTask('queueMicrotask', args[0]);\n };\n });\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nconst taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n let setNative = null;\n let clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n const tasksByHandleId = {};\n function scheduleTask(task) {\n const data = task.data;\n data.args[0] = function () {\n return task.invoke.apply(this, arguments);\n };\n const handleOrId = setNative.apply(window, data.args);\n // Whlist on Node.js when get can the ID by using `[Symbol.toPrimitive]()` we do\n // to this so that we do not cause potentally leaks when using `setTimeout`\n // since this can be periodic when using `.refresh`.\n if (isNumber(handleOrId)) {\n data.handleId = handleOrId;\n }\n else {\n data.handle = handleOrId;\n // On Node.js a timeout and interval can be restarted over and over again by using the `.refresh` method.\n data.isRefreshable = isFunction(handleOrId.refresh);\n }\n return task;\n }\n function clearTask(task) {\n const { handle, handleId } = task.data;\n return clearNative.call(window, handle ?? handleId);\n }\n setNative = patchMethod(window, setName, (delegate) => function (self, args) {\n if (isFunction(args[0])) {\n const options = {\n isRefreshable: false,\n isPeriodic: nameSuffix === 'Interval',\n delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined,\n args: args,\n };\n const callback = args[0];\n args[0] = function timer() {\n try {\n return callback.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n // https://github.com/angular/angular/issues/40387\n // Cleanup tasksByHandleId should be handled before scheduleTask\n // Since some zoneSpec may intercept and doesn't trigger\n // scheduleFn(scheduleTask) provided here.\n const { handle, handleId, isPeriodic, isRefreshable } = options;\n if (!isPeriodic && !isRefreshable) {\n if (handleId) {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[handleId];\n }\n else if (handle) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n handle[taskSymbol] = null;\n }\n }\n }\n };\n const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n const { handleId, handle, isRefreshable, isPeriodic } = task.data;\n if (handleId) {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handleId] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n if (isRefreshable && !isPeriodic) {\n const originalRefresh = handle.refresh;\n handle.refresh = function () {\n const { zone, state } = task;\n if (state === 'notScheduled') {\n task._state = 'scheduled';\n zone._updateTaskCount(task, 1);\n }\n else if (state === 'running') {\n task._state = 'scheduling';\n }\n return originalRefresh.call(this);\n };\n }\n }\n return handle ?? handleId ?? task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n });\n clearNative = patchMethod(window, cancelName, (delegate) => function (self, args) {\n const id = args[0];\n let task;\n if (isNumber(id)) {\n // non nodejs env.\n task = tasksByHandleId[id];\n delete tasksByHandleId[id];\n }\n else {\n // nodejs env ?? other environments.\n task = id?.[taskSymbol];\n if (task) {\n id[taskSymbol] = null;\n }\n else {\n task = id;\n }\n }\n if (task?.type) {\n if (task.cancelFn) {\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n });\n}\n\nfunction patchCustomElements(_global, api) {\n const { isBrowser, isMix } = api.getGlobalObjects();\n if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) {\n return;\n }\n // https://html.spec.whatwg.org/multipage/custom-elements.html#concept-custom-element-definition-lifecycle-callbacks\n const callbacks = [\n 'connectedCallback',\n 'disconnectedCallback',\n 'adoptedCallback',\n 'attributeChangedCallback',\n 'formAssociatedCallback',\n 'formDisabledCallback',\n 'formResetCallback',\n 'formStateRestoreCallback',\n ];\n api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks);\n}\n\nfunction eventTargetPatch(_global, api) {\n if (Zone[api.symbol('patchEventTarget')]) {\n // EventTarget is already patched.\n return;\n }\n const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects();\n // predefine all __zone_symbol__ + eventName + true/false string\n for (let i = 0; i < eventNames.length; i++) {\n const eventName = eventNames[i];\n const falseEventName = eventName + FALSE_STR;\n const trueEventName = eventName + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n const EVENT_TARGET = _global['EventTarget'];\n if (!EVENT_TARGET || !EVENT_TARGET.prototype) {\n return;\n }\n api.patchEventTarget(_global, api, [EVENT_TARGET && EVENT_TARGET.prototype]);\n return true;\n}\nfunction patchEvent(global, api) {\n api.patchEventPrototype(global, api);\n}\n\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n const tip = ignoreProperties.filter((ip) => ip.target === target);\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n const targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter((op) => targetIgnoreProperties.indexOf(op) === -1);\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n const filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\n/**\n * Get all event name properties which the event name startsWith `on`\n * from the target object itself, inherited properties are not considered.\n */\nfunction getOnEventNames(target) {\n return Object.getOwnPropertyNames(target)\n .filter((name) => name.startsWith('on') && name.length > 2)\n .map((name) => name.substring(2));\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n if (Zone[api.symbol('patchEvents')]) {\n // events are already been patched by legacy patch.\n return;\n }\n const ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n let patchTargets = [];\n if (isBrowser) {\n const internalWindow = window;\n patchTargets = patchTargets.concat([\n 'Document',\n 'SVGElement',\n 'Element',\n 'HTMLElement',\n 'HTMLBodyElement',\n 'HTMLMediaElement',\n 'HTMLFrameSetElement',\n 'HTMLFrameElement',\n 'HTMLIFrameElement',\n 'HTMLMarqueeElement',\n 'Worker',\n ]);\n const ignoreErrorProperties = isIE()\n ? [{ target: internalWindow, ignoreProperties: ['error'] }]\n : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, getOnEventNames(internalWindow), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n }\n patchTargets = patchTargets.concat([\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'IDBIndex',\n 'IDBRequest',\n 'IDBOpenDBRequest',\n 'IDBDatabase',\n 'IDBTransaction',\n 'IDBCursor',\n 'WebSocket',\n ]);\n for (let i = 0; i < patchTargets.length; i++) {\n const target = _global[patchTargets[i]];\n target &&\n target.prototype &&\n patchFilteredProperties(target.prototype, getOnEventNames(target.prototype), ignoreProperties);\n }\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nfunction patchBrowser(Zone) {\n Zone.__load_patch('legacy', (global) => {\n const legacyPatch = global[Zone.__symbol__('legacyPatch')];\n if (legacyPatch) {\n legacyPatch();\n }\n });\n Zone.__load_patch('timers', (global) => {\n const set = 'set';\n const clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n });\n Zone.__load_patch('requestAnimationFrame', (global) => {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n });\n Zone.__load_patch('blocking', (global, Zone) => {\n const blockingMethods = ['alert', 'prompt', 'confirm'];\n for (let i = 0; i < blockingMethods.length; i++) {\n const name = blockingMethods[i];\n patchMethod(global, name, (delegate, symbol, name) => {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n });\n Zone.__load_patch('EventTarget', (global, Zone, api) => {\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, api, [XMLHttpRequestEventTarget.prototype]);\n }\n });\n Zone.__load_patch('MutationObserver', (global, Zone, api) => {\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n });\n Zone.__load_patch('IntersectionObserver', (global, Zone, api) => {\n patchClass('IntersectionObserver');\n });\n Zone.__load_patch('FileReader', (global, Zone, api) => {\n patchClass('FileReader');\n });\n Zone.__load_patch('on_property', (global, Zone, api) => {\n propertyDescriptorPatch(api, global);\n });\n Zone.__load_patch('customElements', (global, Zone, api) => {\n patchCustomElements(global, api);\n });\n Zone.__load_patch('XHR', (global, Zone) => {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n const XHR_TASK = zoneSymbol('xhrTask');\n const XHR_SYNC = zoneSymbol('xhrSync');\n const XHR_LISTENER = zoneSymbol('xhrListener');\n const XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n const XHR_URL = zoneSymbol('xhrURL');\n const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n const XMLHttpRequest = window['XMLHttpRequest'];\n if (!XMLHttpRequest) {\n // XMLHttpRequest is not available in service worker\n return;\n }\n const XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n const READY_STATE_CHANGE = 'readystatechange';\n const SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n const data = task.data;\n const target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n const listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n const newListener = (target[XHR_LISTENER] = () => {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n // Also if the request failed without response (status = 0), the load event handler\n // will not be triggered, in that case, we should also invoke the placeholder callback\n // to close the XMLHttpRequest::send macroTask.\n // https://github.com/angular/angular/issues/38795\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n if (target.status !== 0 && loadTasks && loadTasks.length > 0) {\n const oriInvoke = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n for (let i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n });\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n const storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n const data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n });\n const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n const fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n const options = {\n target: self,\n url: self[XHR_URL],\n isPeriodic: false,\n args: args,\n aborted: false,\n };\n const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self &&\n self[XHR_ERROR_BEFORE_SCHEDULED] === true &&\n !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n });\n const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) {\n const task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n });\n }\n });\n Zone.__load_patch('geolocation', (global) => {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n });\n Zone.__load_patch('PromiseRejectionEvent', (global, Zone) => {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n const eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach((eventTask) => {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n const PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n const evt = new PromiseRejectionEvent(evtName, {\n promise: e.promise,\n reason: e.rejection,\n });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n });\n Zone.__load_patch('queueMicrotask', (global, Zone, api) => {\n patchQueueMicrotask(global, api);\n });\n}\n\nfunction patchPromise(Zone) {\n Zone.__load_patch('ZoneAwarePromise', (global, Zone, api) => {\n const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n const ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n const className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n const __symbol__ = api.symbol;\n const _uncaughtPromiseErrors = [];\n const isDisableWrappingUncaughtPromiseRejection = global[__symbol__('DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION')] !== false;\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n const creationTrace = '__creationTrace__';\n api.onUnhandledError = (e) => {\n if (api.showUncaughtError()) {\n const rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = () => {\n while (_uncaughtPromiseErrors.length) {\n const uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(() => {\n if (uncaughtPromiseError.throwOriginal) {\n throw uncaughtPromiseError.rejection;\n }\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n }\n };\n const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) { }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n const symbolState = __symbol__('state');\n const symbolValue = __symbol__('value');\n const symbolFinally = __symbol__('finally');\n const symbolParentPromiseValue = __symbol__('parentPromiseValue');\n const symbolParentPromiseState = __symbol__('parentPromiseState');\n const source = 'Promise.then';\n const UNRESOLVED = null;\n const RESOLVED = true;\n const REJECTED = false;\n const REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return (v) => {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n const once = function () {\n let wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n const TYPE_ERROR = 'Promise resolved with itself';\n const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n const onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n let then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED &&\n value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) &&\n value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n const queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n const trace = Zone.currentTask &&\n Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: trace,\n });\n }\n }\n for (let i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n let uncaughtPromiseError = value;\n try {\n // Here we throws a new Error to print more readable error log\n // and if the value is not an error, zone.js builds an `Error`\n // Object here to attach the stack information.\n throw new Error('Uncaught (in promise): ' +\n readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n uncaughtPromiseError = err;\n }\n if (isDisableWrappingUncaughtPromiseRejection) {\n // If disable wrapping uncaught promise reject\n // use the value instead of wrapping it.\n uncaughtPromiseError.throwOriginal = true;\n }\n uncaughtPromiseError.rejection = value;\n uncaughtPromiseError.promise = promise;\n uncaughtPromiseError.zone = Zone.current;\n uncaughtPromiseError.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(uncaughtPromiseError);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n const handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) { }\n promise[symbolState] = REJECTED;\n for (let i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n const promiseState = promise[symbolState];\n const delegate = promiseState\n ? typeof onFulfilled === 'function'\n ? onFulfilled\n : forwardResolution\n : typeof onRejected === 'function'\n ? onRejected\n : forwardRejection;\n zone.scheduleMicroTask(source, () => {\n try {\n const parentPromiseValue = promise[symbolValue];\n const isFinallyPromise = !!chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution\n ? []\n : [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n const noop = function () { };\n const AggregateError = global.AggregateError;\n class ZoneAwarePromise {\n static toString() {\n return ZONE_AWARE_PROMISE_TO_STRING;\n }\n static resolve(value) {\n if (value instanceof ZoneAwarePromise) {\n return value;\n }\n return resolvePromise(new this(null), RESOLVED, value);\n }\n static reject(error) {\n return resolvePromise(new this(null), REJECTED, error);\n }\n static withResolvers() {\n const result = {};\n result.promise = new ZoneAwarePromise((res, rej) => {\n result.resolve = res;\n result.reject = rej;\n });\n return result;\n }\n static any(values) {\n if (!values || typeof values[Symbol.iterator] !== 'function') {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n const promises = [];\n let count = 0;\n try {\n for (let v of values) {\n count++;\n promises.push(ZoneAwarePromise.resolve(v));\n }\n }\n catch (err) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n if (count === 0) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n let finished = false;\n const errors = [];\n return new ZoneAwarePromise((resolve, reject) => {\n for (let i = 0; i < promises.length; i++) {\n promises[i].then((v) => {\n if (finished) {\n return;\n }\n finished = true;\n resolve(v);\n }, (err) => {\n errors.push(err);\n count--;\n if (count === 0) {\n finished = true;\n reject(new AggregateError(errors, 'All promises were rejected'));\n }\n });\n }\n });\n }\n static race(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n resolve(value);\n }\n function onReject(error) {\n reject(error);\n }\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n }\n static all(values) {\n return ZoneAwarePromise.allWithCallback(values);\n }\n static allSettled(values) {\n const P = this && this.prototype instanceof ZoneAwarePromise ? this : ZoneAwarePromise;\n return P.allWithCallback(values, {\n thenCallback: (value) => ({ status: 'fulfilled', value }),\n errorCallback: (err) => ({ status: 'rejected', reason: err }),\n });\n }\n static allWithCallback(values, callback) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n let unresolvedCount = 2;\n let valueIndex = 0;\n const resolvedValues = [];\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n const curValueIndex = valueIndex;\n try {\n value.then((value) => {\n resolvedValues[curValueIndex] = callback ? callback.thenCallback(value) : value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, (err) => {\n if (!callback) {\n reject(err);\n }\n else {\n resolvedValues[curValueIndex] = callback.errorCallback(err);\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }\n });\n }\n catch (thenErr) {\n reject(thenErr);\n }\n unresolvedCount++;\n valueIndex++;\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n }\n constructor(executor) {\n const promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n const onceWrapper = once();\n executor &&\n executor(onceWrapper(makeResolver(promise, RESOLVED)), onceWrapper(makeResolver(promise, REJECTED)));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n get [Symbol.toStringTag]() {\n return 'Promise';\n }\n get [Symbol.species]() {\n return ZoneAwarePromise;\n }\n then(onFulfilled, onRejected) {\n // We must read `Symbol.species` safely because `this` may be anything. For instance, `this`\n // may be an object without a prototype (created through `Object.create(null)`); thus\n // `this.constructor` will be undefined. One of the use cases is SystemJS creating\n // prototype-less objects (modules) via `Object.create(null)`. The SystemJS creates an empty\n // object and copies promise properties into that object (within the `getOrCreateLoad`\n // function). The zone.js then checks if the resolved value has the `then` method and\n // invokes it with the `value` context. Otherwise, this will throw an error: `TypeError:\n // Cannot read properties of undefined (reading 'Symbol(Symbol.species)')`.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = this.constructor || ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n }\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n finally(onFinally) {\n // See comment on the call to `then` about why thee `Symbol.species` is safely accessed.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n chainPromise[symbolFinally] = symbolFinally;\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n }\n }\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n const NativePromise = (global[symbolPromise] = global['Promise']);\n global['Promise'] = ZoneAwarePromise;\n const symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n const proto = Ctor.prototype;\n const prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n const originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n const wrapped = new ZoneAwarePromise((resolve, reject) => {\n originalThen.call(this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n function zoneify(fn) {\n return function (self, args) {\n let resultPromise = fn.apply(self, args);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n let ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n patchMethod(global, 'fetch', (delegate) => zoneify(delegate));\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n });\n}\n\nfunction patchToString(Zone) {\n // override Function.prototype.toString to make zone.js patched function\n // look like native function\n Zone.__load_patch('toString', (global) => {\n // patch Func.prototype.toString to let them look like native\n const originalFunctionToString = Function.prototype.toString;\n const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n const PROMISE_SYMBOL = zoneSymbol('Promise');\n const ERROR_SYMBOL = zoneSymbol('Error');\n const newFunctionToString = function toString() {\n if (typeof this === 'function') {\n const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.call(originalDelegate);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n const nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.call(nativePromise);\n }\n }\n if (this === Error) {\n const nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.call(nativeError);\n }\n }\n }\n return originalFunctionToString.call(this);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n const originalObjectToString = Object.prototype.toString;\n const PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (typeof Promise === 'function' && this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.call(this);\n };\n });\n}\n\nfunction patchCallbacks(api, target, targetName, method, callbacks) {\n const symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n const nativeDelegate = (target[symbol] = target[method]);\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n const source = `${targetName}.${method}::` + callback;\n const prototype = opts.prototype;\n // Note: the `patchCallbacks` is used for patching the `document.registerElement` and\n // `customElements.define`. We explicitly wrap the patching code into try-catch since\n // callbacks may be already patched by other web components frameworks (e.g. LWC), and they\n // make those properties non-writable. This means that patching callback will throw an error\n // `cannot assign to read-only property`. See this code as an example:\n // https://github.com/salesforce/lwc/blob/master/packages/@lwc/engine-core/src/framework/base-bridge-element.ts#L180-L186\n // We don't want to stop the application rendering if we couldn't patch some\n // callback, e.g. `attributeChangedCallback`.\n try {\n if (prototype.hasOwnProperty(callback)) {\n const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);\n api._redefineProperty(opts.prototype, callback, descriptor);\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n catch {\n // Note: we leave the catch block empty since there's no way to handle the error related\n // to non-writable property.\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n api.attachOriginToPatched(target[method], nativeDelegate);\n}\n\nfunction patchUtil(Zone) {\n Zone.__load_patch('util', (global, Zone, api) => {\n // Collect native event names by looking at properties\n // on the global namespace, e.g. 'onclick'.\n const eventNames = getOnEventNames(global);\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n api.patchMacroTask = patchMacroTask;\n // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS`\n // to define which events will not be patched by `Zone.js`. In newer version (>=0.9.0), we\n // change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep the name consistent with\n // angular repo. The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be\n // supported for backwards compatibility.\n const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS');\n if (global[SYMBOL_UNPATCHED_EVENTS]) {\n global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS];\n }\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] =\n global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n api.patchEventPrototype = patchEventPrototype;\n api.patchEventTarget = patchEventTarget;\n api.isIEOrEdge = isIEOrEdge;\n api.ObjectDefineProperty = ObjectDefineProperty;\n api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;\n api.ObjectCreate = ObjectCreate;\n api.ArraySlice = ArraySlice;\n api.patchClass = patchClass;\n api.wrapWithCurrentZone = wrapWithCurrentZone;\n api.filterProperties = filterProperties;\n api.attachOriginToPatched = attachOriginToPatched;\n api._redefineProperty = Object.defineProperty;\n api.patchCallbacks = patchCallbacks;\n api.getGlobalObjects = () => ({\n globalSources,\n zoneSymbolEventNames,\n eventNames,\n isBrowser,\n isMix,\n isNode,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX,\n ADD_EVENT_LISTENER_STR,\n REMOVE_EVENT_LISTENER_STR,\n });\n });\n}\n\nfunction patchCommon(Zone) {\n patchPromise(Zone);\n patchToString(Zone);\n patchUtil(Zone);\n}\n\nconst Zone$1 = loadZone();\npatchCommon(Zone$1);\npatchBrowser(Zone$1);\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"37b7a98d\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"chat:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkchat\"] = self[\"webpackChunkchat\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n (...funcs: StoreEnhancer[]): StoreEnhancer\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator {\r\n type: T\r\n match: (action: Action) => action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

(\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\r\n */\r\nexport function isActionCreator(\r\n action: unknown\r\n): action is BaseActionCreator & Function {\r\n return (\r\n typeof action === 'function' &&\r\n 'type' in action &&\r\n // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\r\n hasMatchFunction(action as any)\r\n )\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware[]\r\n> extends Array {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer[]\r\n> extends Array {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n : ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n actionCreatorCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n if (actionCreatorCheck) {\r\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(actionCreatorCheck)) {\r\n actionCreatorOptions = actionCreatorCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createActionCreatorInvariantMiddleware(actionCreatorOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk;\r\n\r\ntype PendingAction = ReturnType;\r\ntype RejectedAction = ReturnType;\r\ntype FulfilledAction = ReturnType;\r\n\r\nconst initialState: Record = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher(\r\n matcher: TypeGuard | ((action: any) => boolean),\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior,\r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (!type) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with an empty action type'\r\n )\r\n }\r\n if (type in actionsMap) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: TypeGuard,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = unknown,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n (value: FulfilledValue) => FulfilledValue,\r\n (\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState,\r\n GetExtra,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch, GetExtra, AnyAction>\r\n\r\nexport type GetThunkAPI = BaseThunkAPI<\r\n GetState,\r\n GetExtra,\r\n GetDispatch,\r\n GetRejectValue,\r\n GetRejectedMeta,\r\n GetFulfilledMeta\r\n>\r\n\r\ntype GetRejectValue = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise = T | Promise | (T extends any ? Promise : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta,\r\n Returned,\r\n FulfillWithMeta>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue,\r\n GetRejectedMeta\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI\r\n) => AsyncThunkPayloadCreatorReturnValue\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch,\r\n getState: () => GetState,\r\n extra: GetExtra\r\n) => Promise<\r\n | ReturnType>\r\n | ReturnType>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick, 'getState' | 'extra'>\r\n ): MaybePromise\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue?,\r\n GetRejectedMeta?\r\n ],\r\n GetRejectValue | undefined,\r\n string,\r\n GetSerializedErrorType,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator & {\r\n pending: AsyncThunkPendingActionCreator\r\n rejected: AsyncThunkRejectedActionCreator\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs = Id<\r\n NewConfig & Omit\r\n>\r\n\r\ntype CreateAsyncThunk = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n\r\n withTypes(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk {\r\n type RejectedValue = GetRejectValue\r\n type PendingMeta = GetPendingMeta\r\n type FulfilledMeta = GetFulfilledMeta\r\n type RejectedMeta = GetRejectedMeta\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult(\r\n action: R\r\n): UnwrappedActionPayload {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n ForkOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (\r\n parentAbortSignal: AbortSignalWithReason,\r\n parentBlockingPromises: Promise[]\r\n) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return (\r\n taskExecutor: ForkedTaskExecutor,\r\n opts?: ForkOptions\r\n ): ForkedTask => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask(\r\n async (): Promise => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n if (opts?.autoJoin) {\r\n parentBlockingPromises.push(result)\r\n }\r\n\r\n return {\r\n result: createPause>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = (\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch\r\n >,\r\n signal: AbortSignal\r\n): TakePattern => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async

>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch = ThunkDispatch,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\r\n const listenerMap = new Map()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n const autoJoinPromises: Promise[] = []\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal, autoJoinPromises),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n await Promise.allSettled(autoJoinPromises)\r\n\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal(\r\n signal: AbortSignalWithReason,\r\n promise: Promise\r\n): Promise {\r\n let cleanup = noop\r\n return new Promise((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async (\r\n task: () => Promise,\r\n cleanUp?: () => void\r\n): Promise> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = (signal: AbortSignal) => {\r\n return (promise: Promise): Promise => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause(signal)\r\n return (timeoutMs: number): Promise => {\r\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n () =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isActionCreator,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nexport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n\r\nexport type { ExtractDispatchExtensions as TSHelpersExtractDispatchExtensions } from './tsHelpers'\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState, AppThunk } from '../../app/store';\nimport { fetchCount } from './counterAPI';\n\nexport interface CounterState {\n value: number;\n status: 'idle' | 'loading' | 'failed';\n}\n\nconst initialState: CounterState = {\n value: 0,\n status: 'idle',\n};\n\n// The function below is called a thunk and allows us to perform async logic. It\n// can be dispatched like a regular action: `dispatch(incrementAsync(10))`. This\n// will call the thunk with the `dispatch` function as the first argument. Async\n// code can then be executed and other actions can be dispatched. Thunks are\n// typically used to make async requests.\nexport const incrementAsync = createAsyncThunk(\n 'counter/fetchCount',\n async (amount: number) => {\n const response = await fetchCount(amount);\n // The value we return becomes the `fulfilled` action payload\n return response.data;\n }\n);\n\nexport const counterSlice = createSlice({\n name: 'counter',\n initialState,\n // The `reducers` field lets us define reducers and generate associated actions\n reducers: {\n increment: (state) => {\n // Redux Toolkit allows us to write \"mutating\" logic in reducers. It\n // doesn't actually mutate the state because it uses the Immer library,\n // which detects changes to a \"draft state\" and produces a brand new\n // immutable state based off those changes\n state.value += 1;\n },\n decrement: (state) => {\n state.value -= 1;\n },\n // Use the PayloadAction type to declare the contents of `action.payload`\n incrementByAmount: (state, action: PayloadAction) => {\n state.value += action.payload;\n },\n },\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\n // including actions generated by createAsyncThunk or in other slices.\n extraReducers: (builder) => {\n builder\n .addCase(incrementAsync.pending, (state) => {\n state.status = 'loading';\n })\n .addCase(incrementAsync.fulfilled, (state, action) => {\n state.status = 'idle';\n state.value += action.payload;\n })\n .addCase(incrementAsync.rejected, (state) => {\n state.status = 'failed';\n });\n },\n});\n\nexport const { increment, decrement, incrementByAmount } = counterSlice.actions;\n\n// The function below is called a selector and allows us to select a value from\n// the state. Selectors can also be defined inline where they're used instead of\n// in the slice file. For example: `useSelector((state: RootState) => state.counter.value)`\nexport const selectCount = (state: RootState) => state.counter.value;\n\n// We can also write thunks by hand, which may contain both sync and async logic.\n// Here's an example of conditionally dispatching actions based on current state.\nexport const incrementIfOdd =\n (amount: number): AppThunk =>\n (dispatch, getState) => {\n const currentValue = selectCount(getState());\n if (currentValue % 2 === 1) {\n dispatch(incrementByAmount(amount));\n }\n };\n\nexport default counterSlice.reducer;\n","// A mock function to mimic making an async request for data\nexport function fetchCount(amount = 1) {\n return new Promise<{ data: number }>((resolve) =>\n setTimeout(() => resolve({ data: amount }), 500)\n );\n}\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray<\r\n ActionMatcherDescription\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => NoInfer | void | Draft>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\nexport type NotFunction = T extends Function ? never : T\r\n\r\nfunction isStateFunction(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState> = Reducer & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): ReducerWithInitialState\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState\r\n\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState\r\n}\r\n","import { configureStore, ThunkAction, Action } from '@reduxjs/toolkit';\nimport counterReducer from '../features/counter/counterSlice';\n\nexport const store = configureStore({\n reducer: {\n counter: counterReducer,\n },\n});\n\nexport type AppDispatch = typeof store.dispatch;\nexport type RootState = ReturnType;\nexport type AppThunk = ThunkAction<\n ReturnType,\n RootState,\n unknown,\n Action\n>;\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState` is correct\r\n - `Reducer` is being passed in. In this case, actually `CombinedState` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\ntype Enhancers = ReadonlyArray\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions & Dispatch\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore, A, M> &\r\n ExtractStoreExtensions\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","var _path, _g, _path2;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFabriceAiLogo(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 205,\n height: 50,\n viewBox: \"0 0 205 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_762_6348\",\n style: {\n maskType: \"luminance\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 10,\n width: 166,\n height: 30\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.625 10.9375H0V39.0625H165.625V10.9375Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_762_6348)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 12.8125V39.8125H4.05V28.3375H20.7V24.2875H4.05V16.8625H24.75V12.8125H0ZM44.1375 18.0625H26.8875V22.1125H44.1375C44.3556 22.1145 44.5644 22.2022 44.7186 22.3564C44.8728 22.5106 44.9605 22.7194 44.9625 22.9375V26.9125H26.8875V34.9375C26.8862 35.578 27.0116 36.2125 27.2561 36.8045C27.5006 37.3966 27.8597 37.9345 28.3127 38.3873C28.7655 38.8403 29.3034 39.1994 29.8955 39.4439C30.4875 39.6884 31.122 39.8137 31.7625 39.8125H49.0125V22.9375C49.0137 22.297 48.8884 21.6625 48.6439 21.0705C48.3994 20.4784 48.0403 19.9405 47.5873 19.4877C47.1345 19.0347 46.5966 18.6756 46.0045 18.4311C45.4125 18.1866 44.778 18.0613 44.1375 18.0625ZM44.9625 35.7625H31.7625C31.5444 35.7605 31.3356 35.6728 31.1814 35.5186C31.0272 35.3644 30.9395 35.1556 30.9375 34.9375V30.9625H44.9625V35.7625ZM69.5625 18.0625H56.3625V10.9375H52.3125V39.8125H69.5625C70.203 39.8137 70.8375 39.6884 71.4295 39.4439C72.0216 39.1994 72.5595 38.8403 73.0123 38.3873C73.4653 37.9345 73.8244 37.3966 74.0689 36.8045C74.3134 36.2125 74.4388 35.578 74.4375 34.9375V22.9375C74.4388 22.297 74.3134 21.6625 74.0689 21.0705C73.8244 20.4784 73.4653 19.9405 73.0123 19.4877C72.5595 19.0347 72.0216 18.6756 71.4295 18.4311C70.8375 18.1866 70.203 18.0613 69.5625 18.0625ZM70.3875 34.9375C70.3855 35.1556 70.298 35.3644 70.1436 35.5186C69.9894 35.6728 69.7806 35.7605 69.5625 35.7625H57.1875C56.9694 35.7605 56.7606 35.6728 56.6064 35.5186C56.4522 35.3644 56.3645 35.1556 56.3625 34.9375V22.9375C56.3645 22.7194 56.4522 22.5106 56.6064 22.3564C56.7606 22.2022 56.9694 22.1145 57.1875 22.1125H69.5625C69.7806 22.1145 69.9894 22.2022 70.1436 22.3564C70.298 22.5106 70.3855 22.7194 70.3875 22.9375V34.9375ZM82.125 18.0625C81.4845 18.0613 80.85 18.1866 80.258 18.4311C79.6659 18.6756 79.128 19.0347 78.6752 19.4877C78.2222 19.9405 77.8631 20.4784 77.6186 21.0705C77.3741 21.6625 77.2487 22.297 77.25 22.9375V39.8125H81.3V22.9375C81.302 22.7194 81.3897 22.5106 81.5439 22.3564C81.6981 22.2022 81.9069 22.1145 82.125 22.1125H94.275V18.0625H82.125ZM96.45 39.8125H100.5V18.0625H96.45V39.8125ZM96.45 10.9375V14.9875H100.5V10.9375H96.45ZM109.088 35.7625C108.869 35.7605 108.661 35.6728 108.506 35.5186C108.352 35.3644 108.265 35.1556 108.263 34.9375V22.9375C108.265 22.7194 108.352 22.5106 108.506 22.3564C108.661 22.2022 108.869 22.1145 109.088 22.1125H126.262V18.0625H109.088C108.447 18.0613 107.812 18.1866 107.22 18.4311C106.628 18.6756 106.09 19.0347 105.638 19.4877C105.185 19.9405 104.826 20.4784 104.581 21.0705C104.337 21.6625 104.211 22.297 104.213 22.9375V34.9375C104.211 35.578 104.337 36.2125 104.581 36.8045C104.826 37.3966 105.185 37.9345 105.638 38.3873C106.09 38.8403 106.628 39.1994 107.22 39.4439C107.812 39.6884 108.447 39.8137 109.088 39.8125H126.338V35.7625H109.088ZM146.962 18.0625H134.588C133.947 18.0613 133.312 18.1866 132.72 18.4311C132.128 18.6756 131.59 19.0347 131.138 19.4877C130.685 19.9405 130.326 20.4784 130.081 21.0705C129.837 21.6625 129.711 22.297 129.712 22.9375V34.9375C129.711 35.578 129.837 36.2125 130.081 36.8045C130.326 37.3966 130.685 37.9345 131.138 38.3873C131.59 38.8403 132.128 39.1994 132.72 39.4439C133.312 39.6884 133.947 39.8137 134.588 39.8125H151.838V35.7625H134.588C134.369 35.7605 134.161 35.6728 134.006 35.5186C133.852 35.3644 133.765 35.1556 133.762 34.9375V30.9625H151.838V22.9375C151.839 22.297 151.713 21.6625 151.469 21.0705C151.224 20.4784 150.865 19.9405 150.412 19.4877C149.96 19.0347 149.422 18.6756 148.83 18.4311C148.238 18.1866 147.603 18.0613 146.962 18.0625ZM133.762 26.9125V22.9375C133.765 22.7194 133.852 22.5106 134.006 22.3564C134.161 22.2022 134.369 22.1145 134.588 22.1125H146.962C147.181 22.1145 147.389 22.2022 147.544 22.3564C147.698 22.5106 147.785 22.7194 147.788 22.9375V26.9125H133.762ZM193.725 17.6938C193.727 17.0533 193.602 16.4187 193.356 15.8267C193.113 15.2347 192.753 14.6968 192.3 14.2438C191.847 13.7909 191.309 13.4319 190.717 13.1873C190.125 12.9428 189.491 12.8175 188.85 12.8188H171.6C170.959 12.8175 170.325 12.9428 169.733 13.1873C169.141 13.4319 168.603 13.7909 168.15 14.2438C167.697 14.6968 167.338 15.2347 167.094 15.8267C166.848 16.4187 166.723 17.0533 166.725 17.6938V34.9375C166.723 35.578 166.848 36.2125 167.094 36.8045C167.338 37.3966 167.697 37.9345 168.15 38.3873C168.603 38.8403 169.141 39.1994 169.733 39.4439C170.325 39.6884 170.959 39.8137 171.6 39.8125H188.85C189.491 39.8137 190.125 39.6884 190.717 39.4439C191.309 39.1994 191.847 38.8403 192.3 38.3873C192.753 37.9345 193.113 37.3966 193.356 36.8045C193.602 36.2125 193.727 35.578 193.725 34.9375V25.0375H183.294V29.0875H189.669V34.9375C189.667 35.1556 189.58 35.3644 189.425 35.5186C189.27 35.6728 189.062 35.7605 188.844 35.7625H171.594C171.375 35.7605 171.167 35.6728 171.012 35.5186C170.858 35.3644 170.77 35.1556 170.769 34.9375V17.6875C170.77 17.4694 170.858 17.2606 171.012 17.1064C171.167 16.9522 171.375 16.8645 171.594 16.8625H188.844C189.062 16.8645 189.27 16.9522 189.425 17.1064C189.58 17.2606 189.667 17.4694 189.669 17.6875V19.3H193.719L193.725 17.6938ZM197.85 12.85V39.8125H201.9V30.1C202.173 30.1453 202.448 30.1703 202.725 30.175H219.975C221.267 30.1713 222.505 29.6564 223.419 28.743C224.331 27.8297 224.847 26.5917 224.85 25.3V17.725C224.847 16.4333 224.331 15.1954 223.419 14.282C222.505 13.3685 221.267 12.8537 219.975 12.85H197.85ZM220.794 25.3C220.792 25.5181 220.705 25.7269 220.55 25.8811C220.395 26.0353 220.188 26.123 219.969 26.125H202.719C202.5 26.123 202.292 26.0353 202.137 25.8811C201.983 25.7269 201.895 25.5181 201.894 25.3V17.725C201.895 17.5069 201.983 17.2981 202.137 17.1439C202.292 16.9897 202.5 16.902 202.719 16.9H219.969C220.188 16.902 220.395 16.9897 220.55 17.1439C220.705 17.2981 220.792 17.5069 220.794 17.725V25.3ZM226.156 12.8125V16.8625H237.631V39.8125H241.681V16.8625H253.156V12.8125H226.156Z\",\n fill: \"black\"\n }))), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.987 12.8125H192.024V39.0625H187.337V30.85H172.824V39.0625H168.137V18.6625C168.137 15.475 170.762 12.8875 173.987 12.8125ZM172.824 19.225V26.8375H187.337V16.825H175.187C173.874 16.825 172.824 17.9125 172.824 19.225ZM197.29 12.8125H201.94V39.0625H197.29V12.8125Z\",\n fill: \"black\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFabriceAiLogo);\nexport default __webpack_public_path__ + \"static/media/fabrice-ai-logo.4c3d154d73269acdfc56ce78e320f4bc.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgNewChat(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 24,\n viewBox: \"0 0 26 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.79872 10.8836C1.79872 6.10336 6.24671 2.05607 12.0542 1.69934C12.5283 1.66691 12.8978 1.30369 12.8978 0.862643C12.8978 0.382676 12.4586 -0.00648594 11.9426 0.0259442C5.34038 0.441051 0 5.07208 0 10.8836C0 13.7115 1.6802 16.2994 4.07152 18.1544C6.24671 19.8408 9.07725 20.9823 11.9984 21.1769V23.1616C11.9984 23.4405 12.1448 23.7 12.3958 23.8556C12.6398 24.0113 12.9605 24.0437 13.2324 23.94C15.317 23.1616 18.4125 21.579 21.006 19.3868C23.3415 17.4085 25.3912 14.8336 25.7468 11.8176C25.8025 11.3181 25.3912 10.8836 24.8544 10.8836C24.3942 10.8836 24.0108 11.2014 23.962 11.6295C23.6761 14.0617 22.0029 16.2864 19.7998 18.1479C17.8687 19.7824 15.6098 21.0666 13.8041 21.8774V20.3726C13.8041 19.9056 13.3928 19.5359 12.8978 19.5359C10.13 19.5359 7.33431 18.4982 5.22883 16.8702C3.11638 15.2357 1.79872 13.0758 1.79872 10.8836ZM21.3057 0C21.8007 0 22.1981 0.402134 22.1981 0.862643V3.34679H24.8683C25.3494 3.34679 25.7677 3.69056 25.7956 4.13809C25.8235 4.61806 25.4051 5.02019 24.8962 5.02019H22.1981V7.50434C22.1981 7.95188 21.8286 8.34104 21.3476 8.36699C20.8317 8.39293 20.3994 8.00377 20.3994 7.53029V5.02019H17.7292C17.2482 5.02019 16.8299 4.67643 16.802 4.2289C16.7741 3.74893 17.1924 3.34679 17.7013 3.34679H20.3994V0.836699C20.3994 0.37619 20.7968 0 21.3057 0Z\",\n fill: \"black\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewChat);\nexport default __webpack_public_path__ + \"static/media/new-chat.d251967c1792704c5e283666b0e0fb2b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSidebarToggle(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 14,\n viewBox: \"0 0 26 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 1H11.5M25 7H1M1 7L5.5 2.5M1 7L5.5 11.5M25 13H11.5\",\n stroke: \"black\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidebarToggle);\nexport default __webpack_public_path__ + \"static/media/sidebar-toggle.2bbcbd73231d6f72de0142805d9d1839.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgMic(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 22,\n viewBox: \"0 0 14 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.00167 0.714844C5.9787 0.714844 4.99762 1.12122 4.27426 1.84457C3.55091 2.56793 3.14453 3.54901 3.14453 4.57199V11.4291C3.14453 11.9357 3.2443 12.4372 3.43814 12.9052C3.63198 13.3732 3.91609 13.7984 4.27426 14.1565C4.63243 14.5147 5.05764 14.7988 5.52561 14.9927C5.99358 15.1865 6.49515 15.2863 7.00167 15.2863C7.5082 15.2863 8.00977 15.1865 8.47774 14.9927C8.94571 14.7988 9.37092 14.5147 9.72909 14.1565C10.0873 13.7984 10.3714 13.3732 10.5652 12.9052C10.759 12.4372 10.8588 11.9357 10.8588 11.4291V4.57199C10.8588 3.54901 10.4524 2.56793 9.72909 1.84457C9.00573 1.12122 8.02465 0.714844 7.00167 0.714844ZM4.43025 4.57199C4.43025 4.2343 4.49676 3.89992 4.62598 3.58794C4.75521 3.27596 4.94462 2.99249 5.1834 2.75371C5.42218 2.51493 5.70565 2.32552 6.01763 2.1963C6.32961 2.06707 6.66399 2.00056 7.00167 2.00056C7.33936 2.00056 7.67374 2.06707 7.98572 2.1963C8.2977 2.32552 8.58117 2.51493 8.81995 2.75371C9.05873 2.99249 9.24814 3.27596 9.37737 3.58794C9.50659 3.89992 9.5731 4.2343 9.5731 4.57199V11.4291C9.5731 11.7668 9.50659 12.1012 9.37737 12.4132C9.24814 12.7252 9.05873 13.0086 8.81995 13.2474C8.58117 13.4862 8.2977 13.6756 7.98572 13.8048C7.67374 13.934 7.33936 14.0006 7.00167 14.0006C6.66399 14.0006 6.32961 13.934 6.01763 13.8048C5.70565 13.6756 5.42218 13.4862 5.1834 13.2474C4.94462 13.0086 4.75521 12.7252 4.62598 12.4132C4.49676 12.1012 4.43025 11.7668 4.43025 11.4291V4.57199ZM1.43025 10.7863C1.43025 10.6158 1.36252 10.4523 1.24196 10.3317C1.1214 10.2111 0.957885 10.1434 0.787388 10.1434C0.616892 10.1434 0.453379 10.2111 0.33282 10.3317C0.212261 10.4523 0.144531 10.6158 0.144531 10.7863V11.4291C0.144481 13.1365 0.78139 14.7825 1.93068 16.0451C3.07997 17.3077 4.65897 18.0962 6.35882 18.2563V20.6434C6.35882 20.8139 6.42655 20.9774 6.54711 21.098C6.66767 21.2185 6.83118 21.2863 7.00167 21.2863C7.17217 21.2863 7.33568 21.2185 7.45624 21.098C7.5768 20.9774 7.64453 20.8139 7.64453 20.6434V18.2563C9.34438 18.0962 10.9234 17.3077 12.0727 16.0451C13.222 14.7825 13.8589 13.1365 13.8588 11.4291V10.7863C13.8588 10.6158 13.7911 10.4523 13.6705 10.3317C13.55 10.2111 13.3865 10.1434 13.216 10.1434C13.0455 10.1434 12.882 10.2111 12.7614 10.3317C12.6408 10.4523 12.5731 10.6158 12.5731 10.7863V11.4291C12.5731 12.9068 11.9861 14.3239 10.9413 15.3687C9.89642 16.4136 8.47931 17.0006 7.00167 17.0006C5.52404 17.0006 4.10693 16.4136 3.06208 15.3687C2.01723 14.3239 1.43025 12.9068 1.43025 11.4291V10.7863Z\",\n fill: \"black\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMic);\nexport default __webpack_public_path__ + \"static/media/mic.c97800a3b720bf5fad352a4341754adf.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSend(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27,\n height: 27,\n viewBox: \"0 0 27 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.0865 13.3835H5.9577H12.0865ZM25.6281 12.6879C25.7585 12.7514 25.8683 12.8502 25.9452 12.9732C26.022 13.0962 26.0627 13.2383 26.0626 13.3833C26.0625 13.5283 26.0216 13.6704 25.9446 13.7932C25.8676 13.9161 25.7575 14.0148 25.6271 14.0781L2.28246 25.3204C2.14288 25.3875 1.98633 25.4112 1.83313 25.3883C1.67992 25.3654 1.53714 25.297 1.42329 25.192C1.30944 25.0869 1.22978 24.9501 1.19465 24.7992C1.15952 24.6484 1.17053 24.4904 1.22627 24.3459L5.33563 13.6603C5.40413 13.4821 5.40413 13.2849 5.33563 13.1067L1.22729 2.42009C1.17204 2.27573 1.16136 2.11812 1.19661 1.96762C1.23186 1.81712 1.31144 1.68065 1.42504 1.57584C1.53865 1.47103 1.68108 1.4027 1.83392 1.37966C1.98677 1.35663 2.14301 1.37996 2.28246 1.44663L25.6281 12.6879Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.0865 13.3835L5.9577 13.3835M25.6281 12.6879C25.7585 12.7514 25.8683 12.8502 25.9452 12.9732C26.022 13.0962 26.0627 13.2383 26.0626 13.3833C26.0625 13.5283 26.0216 13.6704 25.9446 13.7932C25.8676 13.9161 25.7575 14.0148 25.6271 14.0781L2.28246 25.3204C2.14288 25.3875 1.98633 25.4112 1.83313 25.3883C1.67992 25.3654 1.53714 25.297 1.42329 25.192C1.30944 25.0869 1.22978 24.9501 1.19465 24.7992C1.15952 24.6484 1.17053 24.4904 1.22627 24.3459L5.33563 13.6603C5.40413 13.4821 5.40413 13.2849 5.33563 13.1067L1.22729 2.42009C1.17204 2.27573 1.16136 2.11812 1.19661 1.96762C1.23186 1.81712 1.31143 1.68065 1.42504 1.57584C1.53865 1.47103 1.68108 1.4027 1.83392 1.37966C1.98677 1.35663 2.14301 1.37996 2.28246 1.44663L25.6281 12.6879Z\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSend);\nexport default __webpack_public_path__ + \"static/media/send.ddd0c38068ce41d9a33af103c37af202.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSendDisabled(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.14346 10.1411L4.429 10.1411M19.5601 9.60606C19.6604 9.65489 19.7449 9.73095 19.804 9.82554C19.8631 9.92014 19.8944 10.0295 19.8943 10.141C19.8942 10.2525 19.8628 10.3618 19.8035 10.4563C19.7443 10.5508 19.6596 10.6268 19.5593 10.6755L1.60189 19.3234C1.49452 19.375 1.3741 19.3932 1.25625 19.3756C1.1384 19.358 1.02857 19.3054 0.940991 19.2246C0.853415 19.1438 0.79214 19.0385 0.765115 18.9225C0.738091 18.8064 0.746565 18.6849 0.789437 18.5738L3.95048 10.3541C4.00318 10.217 4.00318 10.0653 3.95048 9.92821L0.790221 1.70776C0.747726 1.59671 0.739507 1.47547 0.766624 1.35971C0.793741 1.24394 0.85495 1.13896 0.942341 1.05834C1.02973 0.977717 1.13929 0.925151 1.25687 0.907433C1.37444 0.889715 1.49462 0.90766 1.60189 0.958949L19.5601 9.60606Z\",\n stroke: \"#7C7C7C\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSendDisabled);\nexport default __webpack_public_path__ + \"static/media/send-disabled.1ab5eba838938a126c16a196a28c41d0.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgScrollDown(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 66,\n height: 66,\n viewBox: \"0 0 66 66\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1_6)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.75 33C65.75 51.0873 51.0873 65.75 33 65.75C14.9127 65.75 0.25 51.0873 0.25 33C0.25 14.9127 14.9127 0.25 33 0.25C51.0873 0.25 65.75 14.9127 65.75 33Z\",\n fill: \"white\",\n stroke: \"#7D7D7D\",\n strokeWidth: 0.5\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.4872 9C32.1503 9 31.1991 9.91482 31.1991 11.2361V44.7015L31.4047 50.1393L23.6921 41.7792L17.8563 36.0873C17.4449 35.6808 16.8279 35.4774 16.2109 35.4774C14.9511 35.4774 14 36.4431 14 37.6882C14 38.298 14.2313 38.8317 14.7198 39.3398L31.7904 56.2377C32.2788 56.746 32.8702 57 33.4872 57C34.1298 57 34.7212 56.746 35.2096 56.2377L52.2802 39.3398C52.7687 38.8317 53 38.298 53 37.6882C53 36.4431 52.0489 35.4774 50.7634 35.4774C50.1721 35.4774 49.5551 35.6808 49.1437 36.0873L43.2822 41.7792L35.5953 50.1139L35.8009 44.7015V11.2361C35.8009 9.91482 34.8241 9 33.4872 9Z\",\n fill: \"black\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1_6\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 66,\n height: 66,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgScrollDown);\nexport default __webpack_public_path__ + \"static/media/scroll-down.250d3b473110eb3d23c10649f7440040.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgUserChat(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.150691 11.9977L0.150691 11.9977C0.151194 9.38883 1.01263 6.85303 2.60137 4.78369C4.1901 2.71434 6.41733 1.22713 8.93755 0.552749C11.4578 -0.121629 14.1301 0.0545265 16.54 1.05389C18.9499 2.05325 20.9626 3.81996 22.2659 6.07995C23.5693 8.33993 24.0904 10.9669 23.7485 13.5532C23.4065 16.1396 22.2206 18.5409 20.3747 20.3845C18.5287 22.2281 16.126 23.411 13.5392 23.7497C10.9524 24.0884 8.32614 23.564 6.06779 22.2578L6.00931 22.224L5.94522 22.2454L1.26922 23.8054L1.26919 23.8054C1.12235 23.8544 0.964902 23.8624 0.813849 23.8285C0.662797 23.7946 0.523872 23.7201 0.412068 23.613C0.300264 23.5059 0.219827 23.3704 0.179438 23.2209C0.139049 23.0715 0.140241 22.9138 0.182887 22.765L0.182915 22.7649L1.60691 17.7829L1.62379 17.7239L1.59442 17.6699C0.646455 15.9297 0.150073 13.9794 0.150691 11.9977ZM12.0007 1.84769H12.0007C10.2086 1.84757 8.44837 2.32196 6.89902 3.22262C5.34966 4.12328 4.06638 5.4181 3.17964 6.97547C2.2929 8.53283 1.83431 10.2972 1.85047 12.0893C1.86664 13.8812 2.35695 15.637 3.27156 17.178C3.3305 17.2777 3.36844 17.3884 3.38306 17.5033C3.39767 17.6182 3.38866 17.7348 3.35656 17.8461L3.35647 17.8464L2.33847 21.4064L2.2603 21.6798L2.53007 21.59L5.84607 20.486L5.84617 20.486C5.96588 20.446 6.09298 20.4332 6.21824 20.4485C6.34351 20.4638 6.46379 20.5068 6.57037 20.5744L6.57048 20.5744C7.90067 21.4163 9.40845 21.9372 10.9746 22.0959C12.5408 22.2547 14.1224 22.047 15.5945 21.4893C17.0666 20.9315 18.3888 20.039 19.4565 18.8823C20.5243 17.7256 21.3084 16.3364 21.7468 14.8245C22.1852 13.3125 22.2659 11.7194 21.9826 10.1709C21.6993 8.62239 21.0597 7.16103 20.1143 5.9023C19.169 4.64356 17.9438 3.62197 16.5356 2.91827C15.1275 2.21457 13.5749 1.84805 12.0007 1.84769ZM8.15069 9.99769C8.15069 9.77225 8.24024 9.55605 8.39965 9.39665C8.55906 9.23724 8.77526 9.14769 9.00069 9.14769H15.0007C15.2261 9.14769 15.4423 9.23724 15.6017 9.39665C15.7611 9.55605 15.8507 9.77225 15.8507 9.99769C15.8507 10.2231 15.7611 10.4393 15.6017 10.5987C15.4423 10.7581 15.2261 10.8477 15.0007 10.8477H9.00069C8.77526 10.8477 8.55906 10.7581 8.39965 10.5987C8.24024 10.4393 8.15069 10.2231 8.15069 9.99769ZM8.39965 13.3966C8.55906 13.2372 8.77526 13.1477 9.00069 13.1477H13.0007C13.2261 13.1477 13.4423 13.2372 13.6017 13.3966C13.7611 13.5561 13.8507 13.7723 13.8507 13.9977C13.8507 14.2231 13.7611 14.4393 13.6017 14.5987C13.4423 14.7581 13.2261 14.8477 13.0007 14.8477H9.00069C8.77526 14.8477 8.55906 14.7581 8.39965 14.5987C8.24024 14.4393 8.15069 14.2231 8.15069 13.9977C8.15069 13.7723 8.24024 13.5561 8.39965 13.3966Z\",\n fill: \"black\",\n stroke: \"white\",\n strokeWidth: 0.3\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUserChat);\nexport default __webpack_public_path__ + \"static/media/user-chat.fcac73ace61aee9aa2c269d0b3142f03.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgAiChat(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 23,\n viewBox: \"0 0 30 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.08507 3.47726e-05L24.6754 0C27.3803 0 29.573 1.94338 29.573 4.34068V13.0221C29.573 15.4193 27.3803 17.3627 24.6754 17.3627H21.7369V21.7034C21.7369 22.0545 21.4983 22.371 21.1321 22.5054C20.7662 22.6398 20.3448 22.5655 20.0647 22.3172L14.4746 17.3627H5.08509C2.38023 17.3627 0.1875 15.4193 0.1875 13.0221V4.34072C0.1875 1.94343 2.38021 3.47726e-05 5.08507 3.47726e-05Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9023 14.0522H16.3555V10.3828H16.9023V14.0522Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.8226 12.6851L14.2783 11.2618C14.2392 11.1647 14.2 11.0421 14.1608 10.8939C14.1421 10.9671 14.1225 11.0353 14.102 11.0983C14.0833 11.1613 14.0646 11.2175 14.0458 11.2669L13.5041 12.6851H14.8226ZM15.8984 14.0522H15.4793C15.4316 14.0522 15.3924 14.0402 15.3618 14.0164C15.3311 13.9925 15.309 13.9619 15.2953 13.9244L14.9708 13.0735H13.3533L13.0288 13.9244C13.0169 13.9568 12.9948 13.9866 12.9624 14.0138C12.93 14.0394 12.8908 14.0522 12.8448 14.0522H12.4258L13.8874 10.3828H14.4368L15.8984 14.0522Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.3327 6.50334C22.3327 6.40454 22.3183 6.3134 22.2893 6.22993C22.262 6.14645 22.2212 6.07405 22.1667 6.01273C22.1121 5.9514 22.0457 5.9037 21.9673 5.86963C21.889 5.83556 21.7987 5.81853 21.6965 5.81853C21.487 5.81853 21.3217 5.879 21.2008 5.99995C21.0815 6.1209 21.0057 6.2887 20.9733 6.50334H22.3327ZM22.7441 7.71964C22.6828 7.79119 22.6121 7.85337 22.5321 7.90618C22.452 7.95728 22.3668 7.99902 22.2765 8.03139C22.1862 8.06375 22.0925 8.0876 21.9954 8.10293C21.9001 8.11827 21.8055 8.12593 21.7118 8.12593C21.5329 8.12593 21.3669 8.09612 21.2135 8.0365C21.0619 7.97517 20.9299 7.88659 20.8175 7.77075C20.7067 7.65321 20.6199 7.50841 20.5568 7.33635C20.4955 7.1626 20.4648 6.96329 20.4648 6.73842C20.4648 6.55785 20.493 6.39006 20.5492 6.23504C20.6054 6.07831 20.6854 5.94203 20.7894 5.82619C20.895 5.71036 21.0236 5.61922 21.1752 5.55278C21.3268 5.48634 21.4972 5.45312 21.6863 5.45312C21.8447 5.45312 21.9903 5.47953 22.1232 5.53234C22.2578 5.58344 22.3736 5.6584 22.4707 5.7572C22.5678 5.85601 22.6436 5.97781 22.6981 6.1226C22.7544 6.2674 22.7825 6.43264 22.7825 6.61833C22.7825 6.69498 22.774 6.74694 22.7569 6.7742C22.7399 6.79975 22.7084 6.81253 22.6624 6.81253H20.9606C20.9657 6.96755 20.9878 7.10297 21.027 7.21881C21.0662 7.33295 21.1198 7.42834 21.188 7.505C21.2578 7.58166 21.3404 7.63873 21.4358 7.67621C21.5312 7.71368 21.6377 7.73242 21.7553 7.73242C21.866 7.73242 21.9614 7.71964 22.0414 7.69409C22.1232 7.66854 22.1931 7.64128 22.251 7.61232C22.3106 7.58166 22.36 7.55355 22.3992 7.528C22.4401 7.50245 22.4758 7.48967 22.5065 7.48967C22.5474 7.48967 22.5789 7.505 22.601 7.53567L22.7441 7.71964Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.0379 5.97951C20.0225 5.99825 20.0072 6.01358 19.9919 6.0255C19.9782 6.03573 19.9578 6.04084 19.9305 6.04084C19.9033 6.04084 19.8743 6.03061 19.8437 6.01017C19.8147 5.98803 19.7772 5.96503 19.7312 5.94118C19.6869 5.91563 19.6324 5.89263 19.5677 5.87219C19.5047 5.85004 19.4263 5.83897 19.3326 5.83897C19.21 5.83897 19.1018 5.86112 19.0081 5.90541C18.9144 5.9497 18.836 6.01273 18.773 6.0945C18.7117 6.17627 18.6648 6.27592 18.6325 6.39346C18.6001 6.511 18.5839 6.64303 18.5839 6.78953C18.5839 6.94114 18.601 7.07657 18.635 7.19582C18.6691 7.31336 18.7176 7.41301 18.7807 7.49478C18.8437 7.57485 18.9204 7.63617 19.0106 7.67876C19.1009 7.71964 19.2014 7.74009 19.3122 7.74009C19.4195 7.74009 19.5081 7.72731 19.5779 7.70176C19.6478 7.6745 19.7057 7.64554 19.7517 7.61488C19.7977 7.58422 19.836 7.55611 19.8667 7.53056C19.8973 7.5033 19.9288 7.48967 19.9612 7.48967C20.0021 7.48967 20.0336 7.505 20.0558 7.53567L20.1988 7.71964C20.1392 7.7929 20.0719 7.85507 19.997 7.90618C19.9237 7.95728 19.8454 7.99902 19.7619 8.03139C19.6784 8.06375 19.5907 8.0876 19.4987 8.10293C19.4084 8.11827 19.3164 8.12593 19.2227 8.12593C19.0609 8.12593 18.9093 8.09612 18.7679 8.0365C18.6282 7.97687 18.5064 7.89 18.4025 7.77586C18.3003 7.66173 18.2194 7.52204 18.1597 7.3568C18.1001 7.18985 18.0703 7.00076 18.0703 6.78953C18.0703 6.59703 18.0967 6.41901 18.1495 6.25548C18.204 6.09194 18.2833 5.9514 18.3872 5.83386C18.4928 5.71461 18.6222 5.62177 18.7756 5.55534C18.9289 5.4872 19.1043 5.45312 19.3019 5.45312C19.4876 5.45312 19.6512 5.48294 19.7926 5.54256C19.934 5.60218 20.06 5.68651 20.1707 5.79553L20.0379 5.97951Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.4913 5.49399V8.09014H16.993V5.49399H17.4913ZM17.5858 4.69164C17.5858 4.73763 17.5764 4.78193 17.5577 4.82451C17.539 4.8654 17.5134 4.90202 17.481 4.93439C17.4504 4.96505 17.4137 4.98975 17.3712 5.00849C17.3286 5.02553 17.2843 5.03405 17.2383 5.03405C17.1923 5.03405 17.1489 5.02553 17.108 5.00849C17.0671 4.98975 17.0305 4.96505 16.9981 4.93439C16.9674 4.90202 16.9427 4.8654 16.924 4.82451C16.907 4.78193 16.8984 4.73763 16.8984 4.69164C16.8984 4.64394 16.907 4.59965 16.924 4.55877C16.9427 4.51618 16.9674 4.47955 16.9981 4.44889C17.0305 4.41652 17.0671 4.39182 17.108 4.37479C17.1489 4.35605 17.1923 4.34668 17.2383 4.34668C17.2843 4.34668 17.3286 4.35605 17.3712 4.37479C17.4137 4.39182 17.4504 4.41652 17.481 4.44889C17.5134 4.47955 17.539 4.51618 17.5577 4.55877C17.5764 4.59965 17.5858 4.64394 17.5858 4.69164Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5756 5.99214C15.6591 5.82179 15.7596 5.68806 15.8772 5.59096C15.9947 5.49386 16.1361 5.44531 16.3013 5.44531C16.3575 5.44531 16.4104 5.45213 16.4598 5.46575C16.5109 5.47768 16.5552 5.49642 16.5926 5.52197L16.5594 5.89759C16.5475 5.94359 16.5194 5.96659 16.4751 5.96659C16.4512 5.96659 16.4155 5.96233 16.3678 5.95381C16.3201 5.94359 16.269 5.93848 16.2145 5.93848C16.1344 5.93848 16.0637 5.9504 16.0024 5.97425C15.941 5.9964 15.8857 6.03047 15.8363 6.07646C15.7886 6.12075 15.746 6.17612 15.7085 6.24256C15.671 6.30729 15.6361 6.38139 15.6037 6.46486V8.09001H15.1055V5.49386H15.3917C15.4462 5.49386 15.4828 5.50408 15.5015 5.52453C15.522 5.54326 15.5365 5.57733 15.545 5.62674L15.5756 5.99214Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7287 7.45111C12.8105 7.55843 12.8991 7.63339 12.9945 7.67598C13.0899 7.71856 13.1938 7.73986 13.3062 7.73986C13.5379 7.73986 13.7159 7.65724 13.8403 7.492C13.9663 7.32676 14.0294 7.07719 14.0294 6.74331C14.0294 6.43497 13.974 6.20926 13.8633 6.06616C13.7526 5.92136 13.5958 5.84896 13.3931 5.84896C13.25 5.84896 13.1257 5.88133 13.02 5.94606C12.9161 6.0108 12.819 6.10279 12.7287 6.22203V7.45111ZM12.7287 5.85152C12.8361 5.73227 12.9579 5.63602 13.0941 5.56277C13.2304 5.48952 13.3854 5.4529 13.5592 5.4529C13.7108 5.4529 13.8471 5.48271 13.968 5.54233C14.0907 5.60025 14.1946 5.68457 14.2798 5.7953C14.365 5.90433 14.4306 6.0372 14.4765 6.19392C14.5225 6.35065 14.5455 6.52781 14.5455 6.72542C14.5455 6.93495 14.5191 7.12574 14.4663 7.2978C14.4152 7.46985 14.3411 7.61721 14.244 7.73986C14.1486 7.86251 14.0319 7.95791 13.8939 8.02605C13.756 8.09249 13.6009 8.1257 13.4289 8.1257C13.3454 8.1257 13.2688 8.11719 13.1989 8.10015C13.1291 8.08482 13.0643 8.06182 13.0047 8.03116C12.9468 8.0005 12.8931 7.96302 12.8437 7.91873C12.7943 7.87444 12.7475 7.82418 12.7032 7.76797L12.6802 7.98516C12.6666 8.05501 12.624 8.08993 12.5524 8.08993H12.2305V4.31836H12.7287V5.85152Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.0816 6.93759C10.8788 6.9444 10.7068 6.96058 10.5654 6.98614C10.424 7.00999 10.309 7.04235 10.2204 7.08324C10.1319 7.12412 10.068 7.17267 10.0288 7.22889C9.98961 7.2834 9.97002 7.34473 9.97002 7.41287C9.97002 7.4776 9.98024 7.53382 10.0007 7.58151C10.0228 7.62751 10.0518 7.66584 10.0876 7.6965C10.125 7.72546 10.1685 7.74675 10.2179 7.76038C10.2673 7.77401 10.3209 7.78082 10.3789 7.78082C10.4555 7.78082 10.5254 7.77316 10.5884 7.75783C10.6531 7.7425 10.7136 7.7212 10.7698 7.69395C10.826 7.66499 10.8797 7.63006 10.9308 7.58918C10.9819 7.5483 11.0322 7.50145 11.0816 7.44864V6.93759ZM9.61995 5.85671C9.76475 5.71873 9.92147 5.61566 10.0901 5.54752C10.2605 5.47938 10.447 5.44531 10.6497 5.44531C10.7979 5.44531 10.9291 5.47001 11.0432 5.51942C11.1574 5.56711 11.2536 5.6344 11.332 5.72128C11.4103 5.80816 11.4691 5.91207 11.5083 6.03302C11.5492 6.15397 11.5696 6.2877 11.5696 6.4342V8.09001H11.3473C11.2979 8.09001 11.2604 8.08235 11.2349 8.06701C11.2093 8.04998 11.1889 8.01932 11.1736 7.97502L11.1199 7.74761C11.0535 7.80893 10.9879 7.86344 10.9231 7.91114C10.8584 7.95714 10.7903 7.99717 10.7187 8.03124C10.6489 8.06361 10.5739 8.08831 10.4939 8.10534C10.4138 8.12238 10.3252 8.1309 10.2281 8.1309C10.1259 8.1309 10.0296 8.11727 9.93936 8.09001C9.85078 8.06105 9.77327 8.01761 9.70683 7.95969C9.64039 7.90177 9.58758 7.82937 9.5484 7.7425C9.51093 7.65562 9.49219 7.55426 9.49219 7.43842C9.49219 7.33621 9.51944 7.23826 9.57396 7.14456C9.63017 7.04917 9.72046 6.96399 9.84481 6.88904C9.97087 6.81408 10.1344 6.75276 10.3354 6.70506C10.5381 6.65736 10.7869 6.6301 11.0816 6.62329V6.4342C11.0816 6.2383 11.0398 6.09179 10.9564 5.99469C10.8729 5.89759 10.7502 5.84904 10.5884 5.84904C10.4794 5.84904 10.3874 5.86267 10.3124 5.88993C10.2392 5.91718 10.1753 5.94785 10.1208 5.98192C10.068 6.01428 10.0211 6.0441 9.98024 6.07135C9.94106 6.09861 9.90018 6.11224 9.85759 6.11224C9.82352 6.11224 9.79371 6.10287 9.76816 6.08413C9.74431 6.06539 9.72472 6.04324 9.70938 6.01769L9.61995 5.85671Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.80073 4.86296V6.09204H9.27257V6.5341H7.80073V8.09026H7.25391V4.4209H9.52809V4.86296H7.80073Z\",\n fill: \"white\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgAiChat);\nexport default __webpack_public_path__ + \"static/media/ai-chat.bd41f29f84e748e226481c4923184886.svg\";\nexport { ForwardRef as ReactComponent };","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const invalidDate = () => constructFrom(options?.in, NaN);\n\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(+date)) return invalidDate();\n\n const timestamp = +date;\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) return invalidDate();\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) return invalidDate();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate(0, options?.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate(),\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name constructNow\n * @category Generic Helpers\n * @summary Constructs a new current date using the passed value constructor.\n * @pure false\n *\n * @description\n * The function constructs a new current date using the constructor from\n * the reference date. It helps to build generic functions that accept date\n * extensions and use the current date.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @param date - The reference date to take constructor from\n *\n * @returns Current date initialized using the given date constructor\n *\n * @example\n * import { constructNow, isSameDay } from 'date-fns'\n *\n * function isToday(\n * date: DateArg,\n * ): boolean {\n * // If we were to use `new Date()` directly, the function would behave\n * // differently in different timezones and return false for the same date.\n * return isSameDay(date, constructNow(date));\n * }\n */\nexport function constructNow(date) {\n return constructFrom(date, Date.now());\n}\n\n// Fallback for modularized imports:\nexport default constructNow;\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\n\n/**\n * The {@link isToday} function options.\n */\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport function isToday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isToday;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\nimport { subDays } from \"./subDays.js\";\n\n/**\n * The {@link isYesterday} function options.\n */\n\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is yesterday\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * const result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nexport function isYesterday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n subDays(constructNow(options?.in || date), 1),\n );\n}\n\n// Fallback for modularized imports:\nexport default isYesterday;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link isWithinInterval} function options.\n */\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param date - The date to check\n * @param interval - The interval to check\n * @param options - An object with options\n *\n * @returns The date is within the interval\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * // => true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * // => false\n *\n * @example\n * // For date equal to the interval start:\n * isWithinInterval(date, { start, end: date })\n * // => true\n *\n * @example\n * // For date equal to the interval end:\n * isWithinInterval(date, { start: date, end })\n * // => true\n */\nexport function isWithinInterval(date, interval, options) {\n const time = +toDate(date, options?.in);\n const [startTime, endTime] = [\n +toDate(interval.start, options?.in),\n +toDate(interval.end, options?.in),\n ].sort((a, b) => a - b);\n\n return time >= startTime && time <= endTime;\n}\n\n// Fallback for modularized imports:\nexport default isWithinInterval;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return (\n laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n laterDate_.getMonth() === earlierDate_.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameMonth } from \"./isSameMonth.js\";\n\n/**\n * The {@link isThisMonth} function options.\n */\n\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is in this month\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * const result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nexport function isThisMonth(date, options) {\n return isSameMonth(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isThisMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameYear} function options.\n */\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport function isSameYear(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() === earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default isSameYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameYear } from \"./isSameYear.js\";\n\n/**\n * The {@link isThisYear} function options.\n */\n\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is in this year\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * const result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nexport function isThisYear(date, options) {\n return isSameYear(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isThisYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import {format, isThisMonth, isThisYear, isToday, isWithinInterval, isYesterday, parseISO, startOfDay} from \"date-fns\";\nimport { Chat } from \"../types/Types\";\n\n\nexport function sleep(ms: number | undefined) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n \n export function convertFloat32ToS16PCM(float32Array: Float32Array) {\n const int16Array = new Int16Array(float32Array.length);\n \n for (let i = 0; i < float32Array.length; i++) {\n const clampedValue = Math.max(-1, Math.min(1, float32Array[i]));\n int16Array[i] = clampedValue < 0 ? clampedValue * 32768 : clampedValue * 32767;\n }\n return int16Array;\n }\n\nexport const categorizeAndGroupData = (data: Chat[]) => {\n const now = new Date();\n const startOfYesterday = startOfDay(now.setDate(now.getDate() - 1));\n const startOfLastWeek = startOfDay(now.setDate(now.getDate() - 7));\n\n const groups: { [key: string]: Chat[] } = {};\n\n data.forEach(item => {\n const date = parseISO(item.createdAt);\n let category;\n if (isToday(date)) {\n category = 'Today';\n } else if (isYesterday(date)) {\n category = 'Yesterday';\n } else if (isWithinInterval(date, { start: startOfLastWeek, end: startOfYesterday })) {\n category = 'Previous 7 days';\n } else if (isThisMonth(date)) {\n category = 'Previous 30 days';\n } else {\n category = isThisYear(date) ? format(date, 'MMMM') : format(date, 'MMMM yyyy');\n }\n if (!groups[category]) {\n groups[category] = [];\n }\n groups[category].push(item);\n });\n\n return groups;\n};\n\nexport function separateObjects(input: string): any[] {\n const regex = /}{/g;\n const jsonStrings = input.split(regex);\n\n return jsonStrings.map((str, index) => {\n let jsonString = str;\n if (index > 0) {\n jsonString = `{${jsonString}`;\n }\n if (index < jsonStrings.length - 1) {\n jsonString = `${jsonString}}`;\n }\n\n try {\n return JSON.parse(jsonString);\n } catch (error) {\n console.error(`Invalid JSON format for object ${index + 1}:`, error);\n return null; \n }\n }).filter(Boolean);\n}\n\nexport function extractLastCompleteObject(jsonString: string) {\n // Find the start of the metadata array\n const metadataStart = jsonString.indexOf('\"metadata\": [');\n if (metadataStart === -1) return null;\n\n // Find all complete objects\n const objects = [];\n let bracketCount = 0;\n let objectStart = metadataStart + 12; // Length of '\"metadata\": ['\n\n for (let i = objectStart; i < jsonString.length; i++) {\n if (jsonString[i] === '{') {\n if (bracketCount === 0) objectStart = i;\n bracketCount++;\n } else if (jsonString[i] === '}') {\n bracketCount--;\n if (bracketCount === 0) {\n objects.push(JSON.parse(jsonString.substring(objectStart, i + 1)));\n }\n }\n }\n // console.log('objects', objects);\n // Return the last complete object, or null if no complete objects found\n return objects;\n}\n\nexport async function parseMetadata(metadata: any[]) {\n const unicornSourcesPromises = metadata.map(async (item: { featured_media: { toString: () => string | string[]; }; link: any; title: any; date: any; }) => {\n let imageResponse;\n const isImage = ['png', 'jpg', 'jpeg'].some(value => item.featured_media.toString().includes(value));\n try {\n // if (item._links?.[\"wp:featuredmedia\"]?.[0].href) {\n // if (['png', 'jpg', 'jpeg'].some(value => item._links?.[\"wp:featuredmedia\"]?.[0]?.href?.includes(value))) {\n // imageResponse = { guid: { rendered: item._links?.[\"wp:featuredmedia\"]?.[0]?.href } };\n // } else {\n // console.log(\"href\", item._links?.[\"wp:featuredmedia\"]?.[0].href);\n // const response1 = await fetch(item._links?.[\"wp:featuredmedia\"]?.[0].href);\n // // console.log('response1', response1);\n // imageResponse = await response1.json();\n // }\n // } else if (item._links?.[\"wp:featuredmedia\"]) {\n // }\n\n if (!isImage) {\n const response1 = await fetch(`https://fabricegrinda.com/wp-json/wp/v2/media/${item.featured_media}`);\n // console.log('response1', response1);\n imageResponse = await response1.json();\n }\n\n } catch (e) {\n console.log(e);\n }\n // console.log('imageResponse', imageResponse);\n return {\n img: isImage ? item.featured_media : imageResponse?.guid?.rendered, link: item.link, title: item.title, date: item.date\n };\n });\n\n\n const unicornSourcesResponse = await Promise.all(unicornSourcesPromises);\n return unicornSourcesResponse[0];\n // console.log('unicornSources', unicornSources);\n}","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record} */\n const columnStart = {};\n /** @type {Array} */\n const resolveAllConstructs = [];\n /** @type {Array} */\n let chunks = [];\n /** @type {Array} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {Pick} token\n * Token.\n * @returns {Array}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array} events\n * Events.\n * @returns {Array}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract} node\n * Reference node (image, link).\n * @returns {Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// \n\n/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/**\n * @import {Element, ElementContent, Nodes, Parents, Root} from 'hast'\n * @import {ComponentProps, ElementType, ReactElement} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList} from 'unified'\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n * Extra fields we pass.\n * @property {Element | undefined} [node]\n * passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n * [Key in Extract]?: ElementType & ExtraProps>\n * }} Components\n * Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly} options\n * Props.\n * @returns {ReactElement}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n // @ts-expect-error\n // React components are allowed to return numbers,\n // but not according to the types in hast-util-to-jsx-runtime\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {BuildVisitor} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // \n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon === -1 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash !== -1 && colon > slash) ||\n (questionMark !== -1 && colon > questionMark) ||\n (numberSign !== -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","export interface Chat {\n id: number;\n createdAt: string;\n messages: Message[];\n threadId?: string;\n tokenId?: string;\n}\n\nexport interface Message {\n byUser: boolean;\n message: string;\n topSources: Source[];\n status?: string;\n videoMode?: boolean;\n}\n\nexport interface Source {\n img: string;\n link: string;\n title: string;\n date: string;\n}\n\nexport interface ChatData {\n selected: number;\n chats: Chat[];\n}\n\nexport interface RequestBody {\n query: string;\n deviceId: string;\n tokenId: string;\n threadId?: string;\n}\n\nexport type Language = {\n name: string;\n isoCode: string;\n greetings: string[];\n};\n\n// Enum for Avatar Status\nexport enum AvatarStatus {\n NOT_INITIALIZED,\n INITIALIZING,\n INITIALIZED,\n STREAM_READY,\n}\n\nexport enum AvatarState {\n IDLE,\n LISTENING,\n PROCESSING,\n SPEAKING,\n}\n\nexport enum ChatMode {\n TEXT,\n VIDEO,\n LIVE_CHAT,\n PITCH_FABRICE,\n}\n","(function(){\"use strict\";(e=>{try{if(typeof window>\"u\")return;var i=document.createElement(\"style\");i.appendChild(document.createTextNode(e)),document.head.appendChild(i)}catch(o){console.error(\"vite-plugin-css-injected-by-js\",o)}})(\".voice-visualizer__buttons-container{display:flex;justify-content:center;align-items:center;column-gap:20px;row-gap:15px;flex-wrap:wrap;margin-bottom:40px}.voice-visualizer__btn-center{box-sizing:border-box;flex-shrink:0;width:60px;height:60px;padding:0;display:flex;justify-content:center;align-items:center;border-radius:50%;background-color:#fff;border:4px solid #c5c5c5;outline:none;cursor:pointer;transition:border-color .3s,background-color .3s}.voice-visualizer__btn-center:disabled{opacity:.85;cursor:default}.voice-visualizer__btn-center:hover{background-color:#eaeaea;border:4px solid #9f9f9f}.voice-visualizer__btn-center>img{width:auto;height:50%;max-height:30px}.voice-visualizer__btn-center.voice-visualizer__btn-center-pause{background-color:#ff3030}.voice-visualizer__btn-center.voice-visualizer__btn-center-pause:hover{background-color:#ff4f4f}.voice-visualizer__btn-center.voice-visualizer__btn-center-pause>img{height:50%;max-height:16px}.voice-visualizer__btn-center.voice-visualizer__btn-center--border-transparent{border-color:transparent}.voice-visualizer__btn-center.voice-visualizer__btn-center--border-transparent:hover{background-color:#fff}.voice-visualizer__btn-left{box-sizing:border-box;flex-shrink:0;width:60px;height:60px;padding:0;display:flex;justify-content:center;align-items:center;border-radius:50%;background-color:#ff3030;border:4px solid #c5c5c5;outline:none;cursor:pointer;transition:border-color .3s,background-color .3s,opacity .3s}.voice-visualizer__btn-container{min-width:100px;display:flex;justify-content:flex-end}.voice-visualizer__btn-left:hover{background-color:#ff4f4f}.voice-visualizer__btn-left:disabled{opacity:.6;background-color:#ff3030;cursor:default}.voice-visualizer__btn-left.voice-visualizer__btn-left-microphone{background-color:#fff}.voice-visualizer__btn-left.voice-visualizer__btn-left-microphone>img{width:auto;height:50%;max-height:30px}.voice-visualizer__btn-left>img{width:auto;height:50%;max-height:16px}.voice-visualizer__btn-left:hover{border:4px solid #9f9f9f}.voice-visualizer__btn{box-sizing:border-box;min-width:100px;min-height:60px;padding:5px 20px;border-radius:40px;font-size:15px;background-color:#f0f0f0;transition:background-color .3s,opacity .3s}.voice-visualizer__btn:disabled{opacity:.8;background-color:#f0f0f0;cursor:default}.voice-visualizer__btn:hover{background-color:#bebebe}.voice-visualizer__canvas-container{position:relative;width:fit-content;margin:0 auto;overflow:hidden}.voice-visualizer__canvas-container canvas{display:block}.voice-visualizer__canvas-microphone-btn{position:absolute;top:50%;left:50%;width:auto;max-width:12%;min-width:24px;height:50%;max-height:100px;background-color:transparent;border:none;outline:none;transform:translate(-50%,-50%)}.voice-visualizer__canvas-microphone-icon{width:100%;height:100%;will-change:transform;transition:transform .3s}.voice-visualizer__canvas-microphone-btn:hover .voice-visualizer__canvas-microphone-icon{transform:scale(1.03)}.voice-visualizer__canvas-audio-wave-icon{position:absolute;top:50%;left:50%;width:auto;max-width:40%;height:40%;max-height:100px;transform:translate(-118%,-50%) scale(-1)}.voice-visualizer__canvas-audio-wave-icon2{transform:translate(18%,-50%)}.voice-visualizer__canvas-audio-processing{position:absolute;top:50%;left:50%;margin:0;transform:translate(-50%,-50%)}.voice-visualizer__progress-indicator-hovered{position:absolute;top:0;pointer-events:none;height:100%;width:1px;background-color:#85858599}.voice-visualizer__progress-indicator-hovered-time{position:absolute;top:3%;left:1px;width:fit-content;margin:0;padding:0 7px;opacity:.8;font-size:12px;border-radius:0 4px 4px 0;background-color:#575757;text-align:left}.voice-visualizer__progress-indicator-hovered-time.voice-visualizer__progress-indicator-hovered-time-left{left:unset;right:1px;border-radius:4px 0 0 4px}.voice-visualizer__progress-indicator{position:absolute;top:0;pointer-events:none;height:100%;width:1px;background-color:#efefef}.voice-visualizer__progress-indicator-time{position:absolute;top:3%;left:1px;width:fit-content;box-sizing:border-box;min-width:37px;margin:0;padding:0 7px;font-size:12px;border-radius:0 4px 4px 0;text-align:left;color:#000;font-weight:500;background-color:#efefef}.voice-visualizer__progress-indicator-time.voice-visualizer__progress-indicator-time-left{left:unset;right:1px;border-radius:4px 0 0 4px}.voice-visualizer__audio-info-container{box-sizing:border-box;height:55px;display:flex;align-items:center;justify-content:center;gap:30px}.voice-visualizer__audio-info-time{margin:15px 0;min-width:38px;text-align:left}.voice-visualizer__visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:4px solid #c5c5c5;white-space:nowrap;clip-path:inset(100%);clip:rect(0 0 0 0);overflow:hidden}.voice-visualizer__relative{position:relative}.voice-visualizer__spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:52px;height:52px;display:flex;justify-content:center;align-items:center}.voice-visualizer__spinner{flex-shrink:0;width:100%;height:100%;border:4px solid rgba(197,197,197,.5);border-radius:50%;border-top-color:#b7b7b7;animation:voice-visualizer__spin 1s ease-in-out infinite;-webkit-animation:voice-visualizer__spin 1s ease-in-out infinite}@keyframes voice-visualizer__spin{to{transform:rotate(360deg)}}@-webkit-keyframes voice-visualizer__spin{to{transform:rotate(360deg)}}\")})();\nimport { jsx as a, jsxs as ee, Fragment as Ge } from \"react/jsx-runtime\";\nimport { useState as m, useRef as N, useCallback as nt, useLayoutEffect as ke, useEffect as U } from \"react\";\nconst $e = ({\n canvas: e,\n backgroundColor: t\n}) => {\n const r = e.height, i = e.width, c = Math.round(i / 2), u = e.getContext(\"2d\");\n return u ? (u.clearRect(0, 0, i, r), t !== \"transparent\" && (u.fillStyle = t, u.fillRect(0, 0, i, r)), { context: u, height: r, width: i, halfWidth: c }) : null;\n}, Ce = ({\n context: e,\n color: t,\n rounded: r,\n x: i,\n y: c,\n w: u,\n h: L\n}) => {\n e.fillStyle = t, e.beginPath(), e.roundRect ? (e.roundRect(i, c, u, L, r), e.fill()) : e.fillRect(i, c, u, L);\n}, it = ({\n barsData: e,\n canvas: t,\n barWidth: r,\n gap: i,\n backgroundColor: c,\n mainBarColor: u,\n secondaryBarColor: L,\n currentAudioTime: v = 0,\n rounded: z,\n duration: d\n}) => {\n const f = $e({ canvas: t, backgroundColor: c });\n if (!f)\n return;\n const { context: S, height: g } = f, A = v / d;\n e.forEach((h, I) => {\n const w = I / e.length, s = A > w;\n Ce({\n context: S,\n color: s ? L : u,\n rounded: z,\n x: I * (r + i * r),\n y: g / 2 - h.max,\n h: h.max * 2,\n w: r\n });\n });\n};\nfunction ct({\n context: e,\n color: t,\n rounded: r,\n width: i,\n height: c,\n barWidth: u\n}) {\n Ce({\n context: e,\n color: t,\n rounded: r,\n x: i / 2 + u / 2,\n y: c / 2 - 1,\n h: 2,\n w: i - (i / 2 + u / 2)\n });\n}\nconst st = ({\n audioData: e,\n unit: t,\n index: r,\n index2: i,\n canvas: c,\n isRecordingInProgress: u,\n isPausedRecording: L,\n picks: v,\n backgroundColor: z,\n barWidth: d,\n mainBarColor: f,\n secondaryBarColor: S,\n rounded: g,\n animateCurrentPick: A,\n fullscreen: h\n}) => {\n const I = $e({ canvas: c, backgroundColor: z });\n if (!I)\n return;\n const { context: w, height: s, width: H, halfWidth: b } = I;\n if (e != null && e.length && u) {\n const E = Math.max(...e);\n if (!L) {\n if (i.current >= d) {\n i.current = 0;\n const y = (s - E / 258 * s) / s * 100, W = (-s + E / 258 * s * 2) / s * 100, $ = r.current === d ? {\n startY: y,\n barHeight: W\n } : null;\n r.current >= t ? r.current = d : r.current += d, v.length > (h ? H : b) / d && v.pop(), v.unshift($);\n }\n i.current += 1;\n }\n !h && he(), A && Ce({\n context: w,\n rounded: g,\n color: f,\n x: h ? H : b,\n y: s - E / 258 * s,\n h: -s + E / 258 * s * 2,\n w: d\n });\n let B = (h ? H : b) - i.current;\n v.forEach((y) => {\n y && Ce({\n context: w,\n color: f,\n rounded: g,\n x: B,\n y: y.startY * s / 100 > s / 2 - 1 ? s / 2 - 1 : y.startY * s / 100,\n h: y.barHeight * s / 100 > 2 ? y.barHeight * s / 100 : 2,\n w: d\n }), B -= d;\n });\n } else\n v.length = 0;\n function he() {\n ct({\n context: w,\n color: S,\n rounded: g,\n width: H,\n height: s,\n barWidth: d\n });\n }\n}, Je = (e) => {\n const t = Math.floor(e / 3600), r = Math.floor(e % 3600 / 60), i = e % 60, c = Math.floor(\n (i - Math.floor(i)) * 1e3\n );\n return t > 0 ? `${String(t).padStart(2, \"0\")}:${String(r).padStart(\n 2,\n \"0\"\n )}:${String(Math.floor(i)).padStart(2, \"0\")}:${String(\n c\n ).charAt(0)}` : r > 0 ? `${String(r).padStart(2, \"0\")}:${String(\n Math.floor(i)\n ).padStart(2, \"0\")}:${String(c).charAt(0)}` : `${String(Math.floor(i)).padStart(2, \"0\")}:${String(\n c\n ).charAt(0)}`;\n}, ot = (e) => {\n const t = Math.floor(e / 1e3), r = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), c = t % 60;\n return r > 0 ? `${String(r).padStart(2, \"0\")}:${String(i).padStart(\n 2,\n \"0\"\n )}:${String(c).padStart(2, \"0\")}` : `${String(i).padStart(2, \"0\")}:${String(c).padStart(2, \"0\")}`;\n};\nfunction Pe(e) {\n if (typeof e == \"string\") {\n const t = Number(e);\n if (!Number.isNaN(t))\n return `${Math.trunc(t / 2) * 2}px`;\n }\n return e;\n}\nconst at = ({\n bufferData: e,\n height: t,\n width: r,\n barWidth: i,\n gap: c\n}) => {\n const u = r / (i + c * i), L = Math.floor(e.length / u), v = t / 2;\n let z = [], d = 0;\n for (let f = 0; f < u; f++) {\n const S = [];\n let g = 0;\n for (let h = 0; h < L && f * L + h < e.length; h++) {\n const I = e[f * L + h];\n I > 0 && (S.push(I), g++);\n }\n const A = S.reduce((h, I) => h + I, 0) / g;\n A > d && (d = A), z.push({ max: A });\n }\n if (v * 0.95 > d * v) {\n const f = v * 0.95 / d;\n z = z.map((S) => ({\n max: S.max > 0.01 ? S.max * f : 1\n }));\n }\n return z;\n}, ut = (e) => {\n if (!e)\n return \"\";\n const t = e.match(/audio\\/([^;]+)/);\n return t && t.length >= 2 ? `.${t[1]}` : \"\";\n}, ht = (e) => {\n const t = Math.floor(e / 3600), r = Math.floor(e % 3600 / 60), i = e % 60, c = Math.floor(\n (i - Math.floor(i)) * 1e3\n );\n return t > 0 ? `${String(t).padStart(2, \"0\")}:${String(r).padStart(\n 2,\n \"0\"\n )}:${String(Math.floor(i)).padStart(2, \"0\")}}h` : r > 0 ? `${String(r).padStart(2, \"0\")}:${String(\n Math.floor(i)\n ).padStart(2, \"0\")}m` : `${String(Math.floor(i)).padStart(2, \"0\")}:${String(\n c\n ).charAt(0)}${String(c).charAt(1)}s`;\n}, lt = (e) => {\n onmessage = (t) => {\n postMessage(e(t.data));\n };\n};\nfunction mt({\n fn: e,\n initialValue: t,\n onMessageReceived: r\n}) {\n const [i, c] = m(t);\n return {\n result: i,\n setResult: c,\n run: (L) => {\n const v = new Worker(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n URL.createObjectURL(new Blob([`(${lt})(${e})`]))\n );\n v.onmessage = (z) => {\n z.data && (c(z.data), r && r(), v.terminate());\n }, v.onerror = (z) => {\n console.error(z.message), v.terminate();\n }, v.postMessage(L);\n }\n };\n}\nconst vt = (e, t = 250) => {\n const r = N();\n return nt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (...i) => {\n const c = () => {\n clearTimeout(r.current), e(...i);\n };\n clearTimeout(r.current), r.current = setTimeout(c, t);\n },\n [e, t]\n );\n};\nfunction dt(e) {\n const t = N(e);\n return ke(() => {\n t.current = e;\n }, [e]), t;\n}\nconst ft = ({\n color: e = \"#000000\",\n stroke: t = 2,\n className: r\n}) => /* @__PURE__ */ a(\n \"svg\",\n {\n viewBox: \"0 0 23 33\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: r,\n children: /* @__PURE__ */ a(\n \"path\",\n {\n d: \"M1.1 16.72c0 3 .96 5.8 3.61 7.95a9.96 9.96 0 0 0 6.5 2.17m0 0v4.34h4.34-8.67m4.34-4.34c2.35 0 4.42-.48 6.5-2.17a9.87 9.87 0 0 0 3.61-7.95M11.22 1.82c-1.45 0-2.5.37-3.3.93a5.6 5.6 0 0 0-1.84 2.4c-.9 2.06-1.1 4.77-1.1 7.24 0 2.46.2 5.17 1.1 7.24a5.6 5.6 0 0 0 1.84 2.4c.8.55 1.85.92 3.3.92 1.44 0 2.5-.37 3.29-.93a5.6 5.6 0 0 0 1.84-2.4c.9-2.06 1.1-4.77 1.1-7.23 0-2.47-.2-5.18-1.1-7.24a5.6 5.6 0 0 0-1.84-2.4 5.52 5.52 0 0 0-3.3-.93Z\",\n stroke: e,\n strokeWidth: t,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n )\n }\n), Re = ({\n color: e = \"#FFFFFF\",\n reflect: t\n}) => /* @__PURE__ */ a(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0.92 17.54 48.27 14.92\",\n className: `voice-visualizer__canvas-audio-wave-icon ${t ? \"voice-visualizer__canvas-audio-wave-icon2\" : \"\"}`,\n children: /* @__PURE__ */ a(\n \"path\",\n {\n d: \"M.92 24.63h.21v.75H.92zm.42-1.39h.21v3.52h-.21zm.43.68h.21v2.17h-.21zM2.2 22h.21v6.01H2.2zm.43-1.27h.21v8.55h-.21zm.43 2.07h.21v4.4h-.21zm.43 1.22h.21v1.97h-.21zm.43.47h.21v1.03h-.21zm.43-1.66h.21v4.35h-.21zm.43-1.74h.21v7.82h-.21zm.43 1.94h.21v3.94h-.21zm.43 1.07h.21v1.81h-.21zm.42-.94h.21v3.68h-.21zm.43.91h.21v1.86h-.21zm.43-.23h.21v2.33h-.21zm.43.46h.21v1.4h-.21zm.43-.7h.21v2.8h-.21zm.43-1.6h.21v6.01h-.21zm.43-2.23h.21v10.46h-.21zm.43-1.4h.21v13.26h-.21zm.43.62h.21v12.02H9.5zm.43 1.64h.21v8.75h-.21zm.43 1.37h.21v6.01h-.21zm.43-1.87H11v9.74h-.21zm.42 1.32h.21v7.1h-.21zm.43-2.64h.21v12.38h-.21zm.43 1.61h.21v9.17h-.21zM12.5 22h.21v6.01h-.21zm.43 1.32h.21v3.37h-.21zm.43-2.51h.21v8.39h-.21zm.43.59H14v7.2h-.21zm.43 1.79h.21v3.62h-.21zm.43.41h.21v2.8h-.21zm.43.57h.21v1.66h-.21zm.43-1.11h.21v3.88h-.21zm.42-2.98h.21v9.84h-.21zm.43 1.06h.21v7.72h-.21zm.43 3.19H17v1.35h-.21zm.86-2.33h.21v6.01h-.21zm-.43 1.4h.21v3.21h-.21zm1.29.15h.21v2.9h-.21zm.43.68h.21v1.55h-.21zm-.86-.76h.21v3.05h-.21zm1.29-.05h.21v3.16h-.21zm.43-.64h.21v4.45h-.21zm.43.38h.21v3.68h-.21zm.42-.49h.21v4.66h-.21zm.43 1.32h.21v2.02h-.21zm.43.37h.21v1.29h-.21zm.43.31h.21v.67h-.21zm.43-.39h.21v1.45h-.21zm.43-1.35h.21v4.14h-.21zm.86.73h.21v2.69h-.21zm-.43.44h.21v1.81h-.21zm1.29-3.45h.21v8.7h-.21zm.43 1.71h.21v5.28h-.21zm-.86-2.3h.21v9.89h-.21zm1.29 3.36h.21v3.16h-.21zM25.8 22h.21v6.01h-.21zm.43 1.42h.21v3.16h-.21zm.43.88h.21v1.4h-.21zm.43-.93h.21v3.26h-.21zm.43-1.37h.21v6.01h-.21zm.43-.93h.21v7.87h-.21zm.43-.76h.21v9.38h-.21zm.43 1.69h.21v6.01h-.21zm.86 1.92h.21v2.17h-.21zm-.43-.6h.21v3.37h-.21zm1.28.05h.21v3.26h-.21zm.43.67h.21v1.91h-.21zm-.85-.51h.21v2.95h-.21zm1.28-.13h.21v3.21h-.21zm.43-1.4h.21v6.01h-.21zm.43-.99h.21v7.98h-.21zm.43 1.77h.21v4.45h-.21zm.43-1.22h.21v6.89h-.21zm.43 1.6h.21v3.68h-.21zm.43-.28h.21v4.25h-.21zm.43-.6h.21v5.44h-.21zm.43-.28h.21v6.01h-.21zm.85 2.02h.21v1.97h-.21zm-.43-.57h.21v3.11h-.21zm1.29.93h.21v1.24h-.21zm.43-.65h.21v2.54h-.21zm-.86-.28h.21v3.11h-.21zm1.29.83h.21v1.45h-.21zm.43-.99h.21v3.42h-.21zm.43-.1h.21v3.62h-.21zm.43-.7h.21v5.02h-.21zm.43.8h.21v3.42h-.21zm.43-1.29h.21v6.01h-.21zm.42-1.71h.21v9.43h-.21zm.43 2.38h.21v4.66h-.21zm.43.65h.21v3.37h-.21zm.86.08h.21v3.21h-.21zm-.43.54h.21v2.12h-.21zm1.29-.05h.21v2.23h-.21zm.43.28h.21v1.66h-.21zm-.86.16h.21v1.35h-.21zm1.29.21h.21v.93h-.21zm.43-6.04h.21v13h-.21zm.43.8h.21v11.4h-.21zm.43-1.76h.21v14.92h-.21zm.42 1.09h.21v12.74h-.21zm.43 1.17h.21v10.41h-.21zm.43 1.32h.21v7.77h-.21zm.43 1.6h.21v4.56h-.21zm.43 1.17h.21v2.23h-.21zm.86-.08h.21v2.38h-.21zm-.43-.34h.21v3.05h-.21zm1.29-.1h.21v3.26h-.21zm.43.93h.21v1.4h-.21zm-.86-.02h.21v1.45h-.21z\",\n fill: e\n }\n )\n }\n), Be = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjMiIGhlaWdodD0iMzMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTTEuMSAxNi43MmMwIDMgLjk2IDUuOCAzLjYxIDcuOTVhOS45NiA5Ljk2IDAgMCAwIDYuNSAyLjE3bTAgMHY0LjM0aDQuMzQtOC42N200LjM0LTQuMzRjMi4zNSAwIDQuNDItLjQ4IDYuNS0yLjE3YTkuODcgOS44NyAwIDAgMCAzLjYxLTcuOTVNMTEuMjIgMS44MmMtMS40NSAwLTIuNS4zNy0zLjMuOTNhNS42IDUuNiAwIDAgMC0xLjg0IDIuNGMtLjkgMi4wNi0xLjEgNC43Ny0xLjEgNy4yNCAwIDIuNDYuMiA1LjE3IDEuMSA3LjI0YTUuNiA1LjYgMCAwIDAgMS44NCAyLjRjLjguNTUgMS44NS45MiAzLjMuOTIgMS40NCAwIDIuNS0uMzcgMy4yOS0uOTNhNS42IDUuNiAwIDAgMCAxLjg0LTIuNGMuOS0yLjA2IDEuMS00Ljc3IDEuMS03LjIzIDAtMi40Ny0uMi01LjE4LTEuMS03LjI0YTUuNiA1LjYgMCAwIDAtMS44NC0yLjQgNS41MiA1LjUyIDAgMCAwLTMuMy0uOTNaIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K\", zt = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTTE4Ljc1IDYuMTZjNC4zMSAyLjYgNi40NiAzLjkgNi40NiA1Ljg0IDAgMS45NS0yLjE1IDMuMjQtNi40NiA1Ljg0bC00Ljg0IDIuOTJjLTQuMzEgMi42LTYuNDYgMy44OS04LjA4IDIuOTItMS42Mi0uOTgtMS42Mi0zLjU3LTEuNjItOC43NlY5LjA4YzAtNS4xOSAwLTcuNzggMS42Mi04Ljc2IDEuNjItLjk3IDMuNzcuMzMgOC4wOCAyLjkybDQuODQgMi45MloiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==\", We = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZD0iTTE0IDMuNWEzLjUgMy41IDAgMSAxIDcgMHYyMmEzLjUgMy41IDAgMSAxLTcgMHYtMjJaIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjkiIHJ4PSIzLjUiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==\", gt = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjciIGhlaWdodD0iMjUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHJlY3QgeD0iLjIxIiB3aWR0aD0iMjYiIGhlaWdodD0iMjUiIHJ4PSI1IiBmaWxsPSIjZmZmIi8+Cjwvc3ZnPgo=\", It = ({\n controls: {\n audioRef: e,\n audioData: t,\n isRecordingInProgress: r,\n recordedBlob: i,\n duration: c,\n currentAudioTime: u,\n audioSrc: L,\n bufferFromRecordedBlob: v,\n togglePauseResume: z,\n startRecording: d,\n stopRecording: f,\n saveAudioFile: S,\n isAvailableRecordedAudio: g,\n isPausedRecordedAudio: A,\n isPausedRecording: h,\n isProcessingStartRecording: I,\n isProcessingRecordedAudio: w,\n isCleared: s,\n formattedDuration: H,\n formattedRecordingTime: b,\n formattedRecordedAudioCurrentTime: he,\n clearCanvas: E,\n setCurrentAudioTime: B,\n isProcessingOnResize: y,\n _setIsProcessingOnResize: W,\n _setIsProcessingAudioOnComplete: $\n },\n width: te = \"100%\",\n height: re = 200,\n speed: we = 3,\n backgroundColor: F = \"transparent\",\n mainBarColor: D = \"#FFFFFF\",\n secondaryBarColor: k = \"#5e5e5e\",\n barWidth: le = 2,\n gap: J = 1,\n rounded: O = 5,\n isControlPanelShown: Q = !0,\n isDownloadAudioButtonShown: ne = !1,\n animateCurrentPick: me = !0,\n fullscreen: ve = !1,\n onlyRecording: V = !1,\n isDefaultUIShown: Le = !0,\n defaultMicrophoneIconColor: Se = D,\n defaultAudioWaveIconColor: ie = D,\n mainContainerClassName: ce,\n canvasContainerClassName: Ne,\n isProgressIndicatorShown: se = !V,\n progressIndicatorClassName: M,\n isProgressIndicatorTimeShown: Z = !0,\n progressIndicatorTimeClassName: q,\n isProgressIndicatorOnHoverShown: oe = !V,\n progressIndicatorOnHoverClassName: X,\n isProgressIndicatorTimeOnHoverShown: C = !0,\n progressIndicatorTimeOnHoverClassName: x,\n isAudioProcessingTextShown: o = !0,\n audioProcessingTextClassName: Ae,\n controlButtonsClassName: je\n}) => {\n const [de, be] = m(0), [T, ye] = m(0), [ae, xe] = m(0), [fe, ze] = m(0), [Y, ge] = m(!1), [De, Te] = m(window.innerWidth), [G, _e] = m(!1), Ee = De < 768, P = Math.trunc(we), ue = Math.trunc(J), n = Math.trunc(\n Ee && ue > 0 ? le + 1 : le\n ), p = n + ue * n, l = N(null), _ = N([]), K = N(P), Qe = N(n), Ve = N(n), Me = N(null), qe = dt(De), {\n result: pe,\n setResult: Xe,\n run: Ke\n } = mt({\n fn: at,\n initialValue: [],\n onMessageReceived: tt\n }), et = vt(He);\n U(() => {\n He();\n const j = () => {\n qe.current !== window.innerWidth && (g ? (Te(window.innerWidth), W(!0), _e(!0), et()) : (Te(window.innerWidth), He()));\n };\n return window.addEventListener(\"resize\", j), () => {\n window.removeEventListener(\"resize\", j);\n };\n }, [te, g]), ke(() => {\n l.current && ((K.current >= P || !t.length) && (K.current = t.length ? 0 : P, st({\n audioData: t,\n unit: p,\n index: Qe,\n index2: Ve,\n canvas: l.current,\n picks: _.current,\n isRecordingInProgress: r,\n isPausedRecording: h,\n backgroundColor: F,\n mainBarColor: D,\n secondaryBarColor: k,\n barWidth: n,\n rounded: O,\n animateCurrentPick: me,\n fullscreen: ve\n })), K.current += 1);\n }, [\n l.current,\n t,\n n,\n F,\n D,\n k,\n O,\n ve,\n Le,\n fe\n ]), U(() => {\n var j, R;\n if (g)\n return Y ? (j = l.current) == null || j.addEventListener(\"mouseleave\", Ze) : (R = l.current) == null || R.addEventListener(\"mouseenter\", Oe), () => {\n var Ie, Ye;\n Y ? (Ie = l.current) == null || Ie.removeEventListener(\"mouseleave\", Ze) : (Ye = l.current) == null || Ye.removeEventListener(\"mouseenter\", Oe);\n };\n }, [Y, g]), U(() => {\n var R;\n if (!v || !l.current || r || G)\n return;\n if (V) {\n E();\n return;\n }\n _.current = [];\n const j = v.getChannelData(0);\n return Ke({\n bufferData: j,\n height: ae,\n width: fe,\n barWidth: n,\n gap: ue\n }), (R = l.current) == null || R.addEventListener(\"mousemove\", Ue), () => {\n var Ie;\n (Ie = l.current) == null || Ie.removeEventListener(\n \"mousemove\",\n Ue\n );\n };\n }, [\n v,\n T,\n ae,\n J,\n le,\n G\n ]), U(() => {\n if (!(V || !(pe != null && pe.length) || !l.current || w)) {\n if (s) {\n Xe([]);\n return;\n }\n it({\n barsData: pe,\n canvas: l.current,\n barWidth: n,\n gap: ue,\n backgroundColor: F,\n mainBarColor: D,\n secondaryBarColor: k,\n currentAudioTime: u,\n rounded: O,\n duration: c\n });\n }\n }, [\n pe,\n u,\n s,\n O,\n F,\n D,\n k\n ]), U(() => {\n w && l.current && $e({\n canvas: l.current,\n backgroundColor: F\n });\n }, [w]);\n function He() {\n if (!Me.current || !l.current)\n return;\n K.current = P;\n const j = Math.trunc(\n Me.current.clientHeight * window.devicePixelRatio / 2\n ) * 2;\n ye(Me.current.clientWidth), xe(j), ze(\n Math.round(\n Me.current.clientWidth * window.devicePixelRatio\n )\n ), _e(!1);\n }\n function tt() {\n W(!1), $(!1), e != null && e.current && !y && (e.current.src = L);\n }\n const Oe = () => {\n ge(!0);\n }, Ze = () => {\n ge(!1);\n }, Ue = (j) => {\n be(j.offsetX);\n }, rt = (j) => {\n if (e != null && e.current && l.current) {\n const R = c / T * (j.clientX - l.current.getBoundingClientRect().left);\n e.current.currentTime = R, B(R);\n }\n }, Fe = u / c * T;\n return /* @__PURE__ */ ee(\"div\", { className: `voice-visualizer ${ce ?? \"\"}`, children: [\n /* @__PURE__ */ ee(\n \"div\",\n {\n className: `voice-visualizer__canvas-container ${Ne ?? \"\"}`,\n ref: Me,\n style: { width: Pe(te) },\n children: [\n /* @__PURE__ */ a(\n \"canvas\",\n {\n ref: l,\n width: fe,\n height: ae,\n onClick: rt,\n style: {\n height: Pe(re),\n width: T\n },\n children: \"Your browser does not support HTML5 Canvas.\"\n }\n ),\n Le && s && /* @__PURE__ */ ee(Ge, { children: [\n /* @__PURE__ */ a(Re, { color: ie }),\n /* @__PURE__ */ a(Re, { color: ie, reflect: !0 }),\n /* @__PURE__ */ a(\n \"button\",\n {\n onClick: d,\n className: \"voice-visualizer__canvas-microphone-btn\",\n children: /* @__PURE__ */ a(\n ft,\n {\n color: Se,\n stroke: 0.5,\n className: \"voice-visualizer__canvas-microphone-icon\"\n }\n )\n }\n )\n ] }),\n o && w && /* @__PURE__ */ a(\n \"p\",\n {\n className: `voice-visualizer__canvas-audio-processing ${Ae ?? \"\"}`,\n style: { color: D },\n children: \"Processing Audio...\"\n }\n ),\n Y && g && !w && !Ee && oe && /* @__PURE__ */ a(\n \"div\",\n {\n className: `voice-visualizer__progress-indicator-hovered ${X ?? \"\"}`,\n style: {\n left: de\n },\n children: C && /* @__PURE__ */ a(\n \"p\",\n {\n className: `voice-visualizer__progress-indicator-hovered-time \n ${T - de < 70 ? \"voice-visualizer__progress-indicator-hovered-time-left\" : \"\"} \n ${x ?? \"\"}`,\n children: Je(\n c / T * de\n )\n }\n )\n }\n ),\n se && g && !w && c ? /* @__PURE__ */ a(\n \"div\",\n {\n className: `voice-visualizer__progress-indicator ${M ?? \"\"}`,\n style: {\n left: Fe < T - 1 ? Fe : T - 1\n },\n children: Z && /* @__PURE__ */ a(\n \"p\",\n {\n className: `voice-visualizer__progress-indicator-time ${T - u * T / c < 70 ? \"voice-visualizer__progress-indicator-time-left\" : \"\"} ${q ?? \"\"}`,\n children: he\n }\n )\n }\n ) : null\n ]\n }\n ),\n Q && /* @__PURE__ */ ee(Ge, { children: [\n /* @__PURE__ */ ee(\"div\", { className: \"voice-visualizer__audio-info-container\", children: [\n r && /* @__PURE__ */ a(\"p\", { className: \"voice-visualizer__audio-info-time\", children: b }),\n c && !w ? /* @__PURE__ */ a(\"p\", { children: H }) : null\n ] }),\n /* @__PURE__ */ ee(\"div\", { className: \"voice-visualizer__buttons-container\", children: [\n r && /* @__PURE__ */ a(\"div\", { className: \"voice-visualizer__btn-container\", children: /* @__PURE__ */ a(\n \"button\",\n {\n className: `voice-visualizer__btn-left ${h ? \"voice-visualizer__btn-left-microphone\" : \"\"}`,\n onClick: z,\n children: /* @__PURE__ */ a(\n \"img\",\n {\n src: h ? Be : We,\n alt: h ? \"Play\" : \"Pause\"\n }\n )\n }\n ) }),\n !s && /* @__PURE__ */ a(\n \"button\",\n {\n className: `voice-visualizer__btn-left ${r || I ? \"voice-visualizer__visually-hidden\" : \"\"}`,\n onClick: z,\n disabled: w,\n children: /* @__PURE__ */ a(\n \"img\",\n {\n src: A ? zt : We,\n alt: A ? \"Play\" : \"Pause\"\n }\n )\n }\n ),\n s && /* @__PURE__ */ ee(\n \"button\",\n {\n className: `voice-visualizer__btn-center voice-visualizer__relative ${I ? \"voice-visualizer__btn-center--border-transparent\" : \"\"}`,\n onClick: d,\n disabled: I,\n children: [\n I && /* @__PURE__ */ a(\"div\", { className: \"voice-visualizer__spinner-wrapper\", children: /* @__PURE__ */ a(\"div\", { className: \"voice-visualizer__spinner\" }) }),\n /* @__PURE__ */ a(\"img\", { src: Be, alt: \"Microphone\" })\n ]\n }\n ),\n /* @__PURE__ */ a(\n \"button\",\n {\n className: `voice-visualizer__btn-center voice-visualizer__btn-center-pause ${r ? \"\" : \"voice-visualizer__visually-hidden\"}`,\n onClick: f,\n children: /* @__PURE__ */ a(\"img\", { src: gt, alt: \"Stop\" })\n }\n ),\n !s && /* @__PURE__ */ a(\n \"button\",\n {\n onClick: E,\n className: `voice-visualizer__btn ${je ?? \"\"}`,\n disabled: w,\n children: \"Clear\"\n }\n ),\n ne && i && /* @__PURE__ */ a(\n \"button\",\n {\n onClick: S,\n className: `voice-visualizer__btn ${je ?? \"\"}`,\n disabled: w,\n children: \"Download Audio\"\n }\n )\n ] })\n ] })\n ] });\n};\nfunction wt({\n onStartRecording: e,\n onStopRecording: t,\n onPausedRecording: r,\n onResumedRecording: i,\n onClearCanvas: c,\n onEndAudioPlayback: u,\n onStartAudioPlayback: L,\n onPausedAudioPlayback: v,\n onResumedAudioPlayback: z,\n onErrorPlayingAudio: d\n} = {}) {\n const [f, S] = m(!1), [g, A] = m(!1), [h, I] = m(null), [w, s] = m(new Uint8Array(0)), [H, b] = m(!1), [he, E] = m(null), [B, y] = m(null), [W, $] = m(0), [te, re] = m(0), [we, F] = m(0), [D, k] = m(\"\"), [le, J] = m(!0), [O, Q] = m(0), [ne, me] = m(!0), [ve, V] = m(!1), [Le, Se] = m(!1), [ie, ce] = m(null), [Ne, se] = m(!1), M = N(null), Z = N(null), q = N(null), oe = N(null), X = N(null), C = N(null), x = N(null), o = N(null), Ae = !!(B && !H), je = ht(we), de = ot(W), be = Je(O), T = ve || H;\n U(() => {\n if (!f || g)\n return;\n const p = setInterval(() => {\n const l = performance.now();\n $((_) => _ + (l - te)), re(l);\n }, 1e3);\n return () => clearInterval(p);\n }, [te, g, f]), U(() => {\n if (ie) {\n G();\n return;\n }\n }, [ie]), U(() => () => {\n G();\n }, []), U(() => (ne || window.addEventListener(\"beforeunload\", ye), () => {\n window.removeEventListener(\"beforeunload\", ye);\n }), [ne]);\n const ye = (n) => {\n n.preventDefault(), n.returnValue = \"\";\n }, ae = async (n) => {\n if (n)\n try {\n if (n.size === 0)\n throw new Error(\"Error: The audio blob is empty\");\n const p = URL.createObjectURL(n);\n k(p);\n const l = await n.arrayBuffer(), K = await new AudioContext().decodeAudioData(l);\n y(K), F(K.duration - 0.06), ce(null);\n } catch (p) {\n console.error(\"Error processing the audio blob:\", p), ce(\n p instanceof Error ? p : new Error(\"Error processing the audio blob\")\n );\n }\n }, xe = (n) => {\n n instanceof Blob && (G(), Se(!0), me(!1), b(!0), S(!1), $(0), A(!1), o.current = new Audio(), E(n), ae(n));\n }, fe = () => {\n se(!0), navigator.mediaDevices.getUserMedia({ audio: !0 }).then((n) => {\n me(!1), se(!1), S(!0), re(performance.now()), I(n), Z.current = new window.AudioContext(), q.current = Z.current.createAnalyser(), oe.current = new Uint8Array(\n q.current.frequencyBinCount\n ), X.current = Z.current.createMediaStreamSource(n), X.current.connect(q.current), M.current = new MediaRecorder(n), M.current.addEventListener(\n \"dataavailable\",\n Y\n ), M.current.start(), e && e(), ze();\n }).catch((n) => {\n se(!1), ce(\n n instanceof Error ? n : new Error(\"Error starting audio recording\")\n );\n });\n }, ze = () => {\n q.current.getByteTimeDomainData(oe.current), s(new Uint8Array(oe.current)), C.current = requestAnimationFrame(ze);\n }, Y = (n) => {\n M.current && (M.current = null, o.current = new Audio(), E(n.data), ae(n.data));\n }, ge = () => {\n o.current && (Q(o.current.currentTime), x.current = requestAnimationFrame(ge));\n }, De = () => {\n f || Ne || (ne || G(), fe());\n }, Te = () => {\n f && (S(!1), M.current && (M.current.stop(), M.current.removeEventListener(\n \"dataavailable\",\n Y\n )), h == null || h.getTracks().forEach((n) => n.stop()), C.current && cancelAnimationFrame(C.current), X.current && X.current.disconnect(), Z.current && Z.current.state !== \"closed\" && Z.current.close(), b(!0), $(0), A(!1), t && t());\n }, G = () => {\n C.current && (cancelAnimationFrame(C.current), C.current = null), x.current && (cancelAnimationFrame(x.current), x.current = null), M.current && (M.current.removeEventListener(\n \"dataavailable\",\n Y\n ), M.current.stop(), M.current = null), h == null || h.getTracks().forEach((n) => n.stop()), o != null && o.current && (o.current.removeEventListener(\"ended\", P), o.current.pause(), o.current.src = \"\", o.current = null), Z.current = null, q.current = null, oe.current = null, X.current = null, I(null), se(!1), S(!1), Se(!1), b(!1), E(null), y(null), $(0), re(0), F(0), k(\"\"), Q(0), J(!0), A(!1), V(!1), s(new Uint8Array(0)), ce(null), me(!0), c && c();\n }, _e = () => {\n if (o.current && o.current.paused) {\n const n = o.current.play();\n n !== void 0 && n.catch((p) => {\n console.error(p), d && d(\n p instanceof Error ? p : new Error(\"Error playing audio\")\n );\n });\n }\n }, Ee = () => {\n var n, p, l;\n if (f) {\n A((_) => !_), ((n = M.current) == null ? void 0 : n.state) === \"recording\" ? ((p = M.current) == null || p.pause(), $((_) => _ + (performance.now() - te)), C.current && cancelAnimationFrame(C.current), r && r()) : (C.current = requestAnimationFrame(ze), (l = M.current) == null || l.resume(), re(performance.now()), i && i());\n return;\n }\n if (o.current && Ae)\n if (o.current.paused)\n requestAnimationFrame(ge), _e(), o.current.addEventListener(\"ended\", P), J(!1), L && O === 0 && L(), z && O !== 0 && z();\n else {\n x.current && cancelAnimationFrame(x.current), o.current.removeEventListener(\"ended\", P), o.current.pause(), J(!0);\n const _ = o.current.currentTime;\n Q(_), o.current.currentTime = _, v && v();\n }\n }, P = () => {\n x.current && cancelAnimationFrame(x.current), J(!0), o != null && o.current && (o.current.currentTime = 0, Q(0), u && u());\n }, ue = () => {\n var p;\n if (!D)\n return;\n const n = document.createElement(\"a\");\n n.href = D, n.download = `recorded_audio${ut(\n (p = M.current) == null ? void 0 : p.mimeType\n )}`, document.body.appendChild(n), n.click(), document.body.removeChild(n), URL.revokeObjectURL(D);\n };\n return {\n audioRef: o,\n isRecordingInProgress: f,\n isPausedRecording: g,\n audioData: w,\n recordingTime: W,\n isProcessingRecordedAudio: T,\n recordedBlob: he,\n mediaRecorder: M.current,\n duration: we,\n currentAudioTime: O,\n audioSrc: D,\n isPausedRecordedAudio: le,\n bufferFromRecordedBlob: B,\n isCleared: ne,\n isAvailableRecordedAudio: Ae,\n formattedDuration: je,\n formattedRecordingTime: de,\n formattedRecordedAudioCurrentTime: be,\n startRecording: De,\n togglePauseResume: Ee,\n stopRecording: Te,\n saveAudioFile: ue,\n clearCanvas: G,\n setCurrentAudioTime: Q,\n error: ie,\n isProcessingOnResize: ve,\n isProcessingStartRecording: Ne,\n isPreloadedBlob: Le,\n setPreloadedAudioBlob: xe,\n _setIsProcessingAudioOnComplete: b,\n _setIsProcessingOnResize: V\n };\n}\nexport {\n It as VoiceVisualizer,\n wt as useVoiceVisualizer\n};\n","export var IconsManifest = [\n {\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n },\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n },\n {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n },\n {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n }\n]","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: i\n }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n attr: _objectSpread({}, data.attr)\n }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n var elem = conf => {\n var {\n attr,\n size,\n title\n } = props,\n svgProps = _objectWithoutProperties(props, _excluded);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: _objectSpread(_objectSpread({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib/index.mjs';\nexport function AiFillAccountBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAlipayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64m32.493 168c-69.66 0-86.056 16.843-86.709 39.079l-.02 1.426v46.623H291.45c-9.92 0-14.28 23.053-14.27 39.31 0 2.696 2.08 4.923 4.77 4.923h175.814v58.301h-116.5c-9.96 0-14.3 23.76-14.271 39.473a4.772 4.772 0 0 0 4.77 4.76l233.448.003c-4.527 41.056-15.432 77.58-30.716 109.315l-1.224 2.494-.32-.275c-60.244-28.47-120.431-52.577-194.407-52.577l-2.61.017c-84.982 1.112-144.718 56.503-145.916 127.04l-.018 1.222.019 2.123c1.238 70.399 63.566 126.452 148.525 126.452 61.245-.008 116.372-16.85 163.457-45.017a138.579 138.579 0 0 0 14.068-7.962c18.09-12.116 34.892-25.955 50.304-41.156l9.452 6.344 12.456 8.322c57.527 38.257 113.763 72.617 169.856 79.27a142.62 142.62 0 0 0 18.314 1.157c43.017 0 54.991-52.68 57.387-95.508l.145-2.84c.392-8.463-6.197-15.595-14.648-15.863-75.468-2.365-136.452-22.043-192.008-46.11l-6.267-2.742c35.146-56.8 56.657-121.816 57.155-186.661l.082-1.083c.401-5.515-3.997-10.198-9.52-10.198H549.33v-58.301h165.732c9.92 0 14.28-22.117 14.27-39.311-.01-2.686-2.089-4.922-4.779-4.922H549.32v-82.35c0-2.656-2.175-4.778-4.827-4.778m-216.5 351.847c54.627 0 107.073 22.417 158.09 52.19l5.77 3.402c-103.575 119.837-247.172 95.903-261.724 26.37a66.89 66.89 0 0 1-1.138-9.83l-.057-2.336.013-.907c.969-40.113 45.337-68.89 99.045-68.89\"},\"child\":[]}]})(props);\n};\nexport function AiFillAlipaySquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M894.606 116.541c5.541 2.963 9.89 7.312 12.853 12.853 2.963 5.54 4.541 11.036 4.541 26.192v712.828c0 15.156-1.578 20.652-4.541 26.192-2.963 5.541-7.312 9.89-12.853 12.853-5.54 2.963-11.036 4.541-26.192 4.541H155.586c-15.156 0-20.652-1.578-26.192-4.541-5.541-2.963-9.89-7.312-12.853-12.853-2.923-5.465-4.498-10.888-4.54-25.583L112 155.586c0-15.156 1.578-20.652 4.541-26.192 2.963-5.541 7.312-9.89 12.853-12.853 5.465-2.923 10.888-4.498 25.583-4.54L868.414 112c15.156 0 20.652 1.578 26.192 4.541M541.012 262c-62.197 0-76.836 15.038-77.419 34.892l-.018 1.274v41.627H315.08c-8.858 0-12.75 20.583-12.742 35.098 0 2.407 1.857 4.395 4.259 4.395h156.977v52.055H359.556c-8.891 0-12.767 21.215-12.741 35.244a4.26 4.26 0 0 0 4.259 4.25l208.436.003c-4.042 36.657-13.779 69.267-27.425 97.602l-1.093 2.227-.285-.245c-53.79-25.421-107.528-46.944-173.578-46.944l-2.33.015c-75.878.993-129.213 50.449-130.283 113.43l-.016 1.09.017 1.895c1.105 62.856 56.756 112.904 132.612 112.904 54.682-.008 103.903-15.046 145.943-40.194a123.73 123.73 0 0 0 12.561-7.109c16.152-10.818 31.153-23.174 44.914-36.746l8.44 5.664 11.12 7.43c51.365 34.158 101.575 64.836 151.658 70.776a127.34 127.34 0 0 0 16.352 1.034c38.408 0 49.1-47.036 51.238-85.275l.13-2.536c.35-7.556-5.533-13.924-13.079-14.163-67.382-2.111-121.832-19.681-171.436-41.17l-5.595-2.448c31.38-50.714 50.587-108.764 51.032-166.662l.073-.966c.357-4.924-3.569-9.106-8.5-9.106H545.33v-52.055h147.974c8.858 0 12.75-19.747 12.742-35.099-.009-2.398-1.865-4.394-4.267-4.394H545.32v-73.526c0-2.373-1.942-4.267-4.31-4.267M347.707 576.149c48.775 0 95.602 20.015 141.153 46.6l5.152 3.036c-92.478 106.997-220.69 85.627-233.683 23.545a59.723 59.723 0 0 1-1.016-8.778l-.05-2.085.011-.81c.865-35.815 40.48-61.508 88.433-61.508\"},\"child\":[]}]})(props);\n};\nexport function AiFillAliwangwang (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-325.2 79c0 20.4-16.6 37.1-37.1 37.1-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1zm175.2 0c0 20.4-16.6 37.1-37.1 37.1S644 476.8 644 456.4v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAmazonCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm35.8 262.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9 4.7-12.2 11.8-23.9 21.4-35 9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAmazonSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM547.8 326.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9s11.8-23.9 21.4-35c9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7zM485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillApi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 68.9-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillApple (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAppstore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z\"},\"child\":[]}]})(props);\n};\nexport function AiFillAudio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm330-170c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBehanceCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M420.3 470.3c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1a50.5 50.5 0 0 0 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm86.5 286.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBehanceSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBilibili (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M198.134 484.45c-7.999-4.463-16.498-8.43-24.997-11.9a273.55 273.55 0 0 0-26.996-7.438c-2.5-.992-2.5.991-2.5 1.487 0 7.934.5 18.843 1.5 27.768 1 7.438 2 15.372 4 22.81 0 .496 0 .991.5 1.487.999.992 1.999 1.488 2.999.496 7.999-4.463 15.998-8.43 22.997-13.388 7.499-5.454 15.498-11.9 21.997-18.347 1.5-1.487 0-2.479.5-2.975m323.96-11.9a273.55 273.55 0 0 0-26.997-7.438c-2.5-.992-2.5.991-2.5 1.487 0 7.934.5 18.843 1.5 27.768 1 7.438 2 15.372 4 22.81 0 .496 0 .991.5 1.487 1 .992 2 1.488 3 .496 7.999-4.463 15.998-8.43 22.997-13.388 7.499-5.454 15.498-11.9 21.997-18.347 2-1.487.5-2.479.5-2.975-7.5-4.463-16.498-8.43-24.997-11.9\",\"transform\":\"translate(112 112)\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M629.496 0H171C76.499 0 0 76.5 0 171.5v458C.5 723.5 77 800 170.999 800h457.997c94.5 0 171.002-76.5 171.002-170.5v-458C800.495 76.5 723.996 0 629.496 0m95 343.5h15.5v48h-15.5zm-95.5-1.5 2 43-13.5 1.5-5-44.5zm-23.5 0 4 45.5-14.5 1.5-6.5-47.5h17zm-230.498 1.5h15v48h-15zm-96-1.5 2 43-13.5 1.5-5-44.5zm-23.5 0 4 45.5-14.5 2-6-47.5zm-3.5 149C231.498 556.5 104 550.5 92.5 548.5 83.5 387 69.5 352 58 273l54.5-22.5c1 71.5 9 185 9 185s108.5-15.5 132 47c.5 3 0 6-1.5 8.5m20.5 35.5-23.5-124h35.5l13 123zm44.5-8-27-235 33.5-1.5 21 236h-27.5zm34-175h17.5v48h-13.5zm41 190h-26.5l-9.5-126h36zm209.998-43C581.496 556 453.997 550 442.497 548c-9-161-23-196-34.5-275l54.5-22.5c1 71.5 9 185 9 185s108.5-15.5 132 46.5c.5 3 0 6-1.5 8.5m19.5 36-23-124h35.5l13 123zm45.5-8-27.5-235 33.5-1.5 21 236h-27zm33.5-175h17.5v48h-13zm41 190h-26.5l-9.5-126h36z\",\"transform\":\"translate(112 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiFillBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM668 345.9L621.5 312 572 347.4V124h96v221.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBoxPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H448v432h344c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-728 80v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h152V296H232c-4.4 0-8 3.6-8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBuild (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM612 746H412V546h200v200zm268-268H680V278h200v200z\"},\"child\":[]}]})(props);\n};\nexport function AiFillBulb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M348 676.1C250 619.4 184 513.4 184 392c0-181.1 146.9-328 328-328s328 146.9 328 328c0 121.4-66 227.4-164 284.1V792c0 17.7-14.3 32-32 32H380c-17.7 0-32-14.3-32-32V676.1zM392 888h240c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM440.2 765h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zm7.8-382c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48zm328 369c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-104c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-265c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M112 880c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V460H112v420zm768-696H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v176h800V216c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 260H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 260H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V340c0-44.2-35.8-80-80-80zM512 716c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm-96-160a96 96 0 1 0 192 0 96 96 0 1 0-192 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM220 418l72.7-199.9.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCaretDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCaretLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCaretRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCaretUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCarryOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM694.5 432.7L481.9 725.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCheckSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM695.5 365.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L308.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H689c6.5 0 10.3 7.4 6.5 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillChrome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512 589.5 371.8 512 371.8 371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2 180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7 653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCiCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-63.6 656c-103 0-162.4-68.6-162.4-182.6v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-4-46.1-37.6-77.6-87-77.6-61.1 0-95.6 45.4-95.6 126.9v49.3c0 80.3 34.5 125.1 95.6 125.1 49.3 0 82.8-29.5 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillClockCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm176.5 585.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCloseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64Zm127.978 274.82-.034.006c-.023.007-.042.018-.083.059L512 466.745l-127.86-127.86c-.042-.041-.06-.052-.084-.059a.118.118 0 0 0-.07 0c-.022.007-.041.018-.082.059l-45.02 45.019c-.04.04-.05.06-.058.083a.118.118 0 0 0 0 .07l.01.022a.268.268 0 0 0 .049.06L466.745 512l-127.86 127.862c-.041.04-.052.06-.059.083a.118.118 0 0 0 0 .07c.007.022.018.041.059.082l45.019 45.02c.04.04.06.05.083.058a.118.118 0 0 0 .07 0c.022-.007.041-.018.082-.059L512 557.254l127.862 127.861c.04.041.06.052.083.059a.118.118 0 0 0 .07 0c.022-.007.041-.018.082-.059l45.02-45.019c.04-.04.05-.06.058-.083a.118.118 0 0 0 0-.07l-.01-.022a.268.268 0 0 0-.049-.06L557.254 512l127.861-127.86c.041-.042.052-.06.059-.084a.118.118 0 0 0 0-.07c-.007-.022-.018-.041-.059-.082l-45.019-45.02c-.04-.04-.06-.05-.083-.058a.118.118 0 0 0-.07 0Z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCloseSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112c17.7 0 32 14.3 32 32v736c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32ZM639.978 338.82l-.034.006c-.023.007-.042.018-.083.059L512 466.745l-127.86-127.86c-.042-.041-.06-.052-.084-.059a.118.118 0 0 0-.07 0c-.022.007-.041.018-.082.059l-45.02 45.019c-.04.04-.05.06-.058.083a.118.118 0 0 0 0 .07l.01.022a.268.268 0 0 0 .049.06L466.745 512l-127.86 127.862c-.041.04-.052.06-.059.083a.118.118 0 0 0 0 .07c.007.022.018.041.059.082l45.019 45.02c.04.04.06.05.083.058a.118.118 0 0 0 .07 0c.022-.007.041-.018.082-.059L512 557.254l127.862 127.861c.04.041.06.052.083.059a.118.118 0 0 0 .07 0c.022-.007.041-.018.082-.059l45.02-45.019c.04-.04.05-.06.058-.083a.118.118 0 0 0 0-.07l-.01-.022a.268.268 0 0 0-.049-.06L557.254 512l127.861-127.86c.041-.042.052-.06.059-.084a.118.118 0 0 0 0-.07c-.007-.022-.018-.041-.059-.082l-45.019-45.02c-.04-.04-.06-.05-.083-.058a.118.118 0 0 0-.07 0Z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCodeSandboxCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm243.7 589.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zM307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zm203.9-151.8L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8zm20 352l97.3-56.2v-94.1l87-49.5V418.5L531.8 525z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCodeSandboxSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM755.7 653.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zm-223.9 83.7l97.3-56.2v-94.1l87-49.5V418.5L531.8 525zm-20-352L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM513.1 518.1l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3zM716 673c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCodepenCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCodepenSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M723.1 428L535.9 303.4v111.3l103.6 69.1zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zm23.9 154.2v111.3L723.1 597l-83.6-55.8zm-151.4-69.1L300.9 597l187.2 124.6V610.3l-103.6-69.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-90 485c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-47.8-44.6v-79.8l-59.8 39.9zm-460.4-79.8v79.8l59.8-39.9zm206.3-57.9V303.4L300.9 428l83.6 55.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCompass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM327.3 702.4c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2l98.7-225.5 132.1 132.1-225.5 98.7zm375.1-375.1l-98.7 225.5-132.1-132.1L697.1 322c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM661 736h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.6-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H363a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112 61.5 0 111.4 50.1 111.4 112 0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zM512 474c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52z\"},\"child\":[]}]})(props);\n};\nexport function AiFillContainer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v529c0-.6.4-1 1-1h219.3l5.2 24.7C397.6 708.5 450.8 752 512 752s114.4-43.5 126.4-103.3l5.2-24.7H863c.6 0 1 .4 1 1V96c0-17.7-14.3-32-32-32zM712 493c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm0-160c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm151 354H694.1c-11.6 32.8-32 62.3-59.1 84.7-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H161c-.6 0-1-.4-1-1v242c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V686c0 .6-.4 1-1 1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillControl (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM404 683v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99zm279.6-143.9c.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1zM616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM403.4 566.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM382 896h-.2L232 746.2v-.2h150v150z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCopyrightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm5.4 670c-110 0-173.4-73.2-173.4-194.9v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.6-3.2-8-7.4-4-49.5-40-83.4-93-83.4-65.3 0-102.1 48.5-102.1 135.5v52.6c0 85.7 36.9 133.6 102.1 133.6 52.8 0 88.7-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v160h896V192c0-17.7-14.3-32-32-32zM64 832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V440H64v392zm579-184c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zM512 734.2c-62.1 0-112.6-50.5-112.6-112.6S449.9 509 512 509s112.6 50.5 112.6 112.6S574.1 734.2 512 734.2zm0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillCustomerService (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDashboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM482 232c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.5l-31.1 31.1a8.03 8.03 0 0 1-11.3 0L261.7 352a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.6l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.1 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM288 232c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm128-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm128-168c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDiff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDingtalkCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm227 385.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDingtalkSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM739 449.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDiscord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M693.152 0c51.153 0 92.41 41.358 94.848 90.028V873l-97.395-82.68-53.482-48.67-58.356-50.852 24.376 80.207H92.41C41.403 771.005 0 732.265 0 680.94V90.21C0 41.54 41.476.11 92.592.11h600.305zM470.164 207.109h-1.091l-7.346 7.269c75.382 21.806 111.855 55.86 111.855 55.86-48.582-24.277-92.364-36.416-136.146-41.323-31.636-4.906-63.272-2.326-90 0h-7.272c-17.091 0-53.455 7.27-102.182 26.713-16.982 7.378-26.727 12.212-26.727 12.212s36.436-36.417 116.727-55.86l-4.91-4.907s-60.8-2.326-126.436 46.156c0 0-65.636 114.265-65.636 255.134 0 0 36.364 63.238 136.11 65.637 0 0 14.545-19.371 29.272-36.417-56-17.008-77.818-51.026-77.818-51.026s4.872 2.398 12.181 7.269h2.182c1.091 0 1.6.545 2.182 1.09v.218c.582.581 1.091 1.09 2.182 1.09 12 4.943 24 9.813 33.818 14.538a297.576 297.576 0 0 0 65.455 19.48c33.818 4.906 72.581 7.269 116.727 0 21.818-4.906 43.636-9.704 65.454-19.444 14.182-7.269 31.637-14.537 50.8-26.785 0 0-21.818 34.018-80.181 51.026 12 16.937 28.909 36.344 28.909 36.344 99.782-2.18 138.545-65.419 140.727-62.73 0-140.65-66-255.133-66-255.133-59.455-44.121-115.09-45.793-124.91-45.793l2.037-.727zM477 367c25.463 0 46 21.757 46 48.41 0 26.833-20.646 48.59-46 48.59s-46-21.757-46-48.373c.072-26.834 20.754-48.518 46-48.518zm-165.855 0C336.499 367 357 388.757 357 415.41c0 26.833-20.646 48.59-46 48.59s-46-21.757-46-48.373c0-26.834 20.646-48.518 46-48.518z\",\"transform\":\"translate(118 87)\"},\"child\":[]}]})(props);\n};\nexport function AiFillDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDollarCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm22.3 665.2l.2 31.7c0 4.4-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4C401.3 723 359.5 672.4 355 617.4c-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.7 29.8 55.4 74.1 61.3V533.9l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-72.9 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.9 46.9 125.9 109.2.5 4.7-3.2 8.8-8 8.8h-44.9c-4 0-7.4-3-7.9-6.9-4-29.2-27.4-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 108.9 116.4 0 75.3-56 117.3-134.3 124.1zM426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-36.9 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.8-.6-5.6-1.3-8.8-2.2V677c42.6-3.8 72-27.2 72-66.4 0-30.7-15.9-50.7-63.2-65.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm184.5 353.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM696.5 412.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDribbbleCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M675.1 328.3a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6zm47.7-11.9c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 736c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm53.1-346.2c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm30.6 82.5c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDribbbleSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDropboxCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M663.8 455.5zm-151.5-93.8l-151.8 93.8 151.8 93.9 151.5-93.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm151.2 595.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillDropboxSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM663.2 659.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1zM512.3 361.7l-151.8 93.8 151.8 93.9 151.5-93.9zm151.5 93.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillEnvironment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 327c-29.9 0-58 11.6-79.2 32.8A111.6 111.6 0 0 0 400 439c0 29.9 11.7 58 32.8 79.2A111.6 111.6 0 0 0 512 551c29.9 0 58-11.7 79.2-32.8C612.4 497 624 468.9 624 439c0-29.9-11.6-58-32.8-79.2S541.9 327 512 327zm342.6-37.9a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z\"},\"child\":[]}]})(props);\n};\nexport function AiFillEuroCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm63.5 375.8c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8h-136c-.3 4.4-.3 9.1-.3 13.8v36h136.2c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H444.9c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.2 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.3 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.8.3-12.8H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.7c19.7-94.2 92-149.9 198.6-149.9 20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346h.1c0 5.1-4.6 8.8-9.6 7.8-14.7-2.9-31.8-4.4-51.7-4.4-65.4 0-110.4 33.5-127.6 90.4h128.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillExclamationCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillExperiment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M218.9 636.3l42.6 26.6c.1.1.3.2.4.3l12.7 8 .3.3a186.9 186.9 0 0 0 94.1 25.1c44.9 0 87.2-15.7 121-43.8a256.27 256.27 0 0 1 164.9-59.9c52.3 0 102.2 15.7 144.6 44.5l7.9 5-111.6-289V179.8h63.5c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8H264.7c-4.4 0-8 3.6-8 8v51.9c0 4.4 3.6 8 8 8h63.5v173.6L218.9 636.3zm333-203.1c22 0 39.9 17.9 39.9 39.9S573.9 513 551.9 513 512 495.1 512 473.1s17.9-39.9 39.9-39.9zM878 825.1l-29.9-77.4-85.7-53.5-.1.1c-.7-.5-1.5-1-2.2-1.5l-8.1-5-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-53 0-103.5-16.1-146.2-45.6l-28.9-18.1L146 825.1c-2.8 7.4-4.3 15.2-4.3 23 0 35.2 28.6 63.8 63.8 63.8h612.9c7.9 0 15.7-1.5 23-4.3a63.6 63.6 0 0 0 36.6-82.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillEyeInvisible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"defs\",\"attr\":{},\"child\":[{\"tag\":\"clipPath\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"none\",\"d\":\"M124-288l388-672 388 672H124z\",\"clipRule\":\"evenodd\"},\"child\":[]}]}]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508 624a112 112 0 0 0 112-112c0-3.28-.15-6.53-.43-9.74L498.26 623.57c3.21.28 6.45.43 9.74.43zm370.72-458.44L836 122.88a8 8 0 0 0-11.31 0L715.37 232.23Q624.91 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.7 119.43 136.55 191.45L112.56 835a8 8 0 0 0 0 11.31L155.25 889a8 8 0 0 0 11.31 0l712.16-712.12a8 8 0 0 0 0-11.32zM332 512a176 176 0 0 1 258.88-155.28l-48.62 48.62a112.08 112.08 0 0 0-140.92 140.92l-48.62 48.62A175.09 175.09 0 0 1 332 512z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M942.2 486.2Q889.4 375 816.51 304.85L672.37 449A176.08 176.08 0 0 1 445 676.37L322.74 798.63Q407.82 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillEye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M396 512a112 112 0 1 0 224 0 112 112 0 1 0-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFacebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-92.4 233.5h-63.9c-50.1 0-59.8 23.8-59.8 58.8v77.1h119.6l-15.6 120.7h-104V912H539.2V602.2H434.9V481.4h104.3v-89c0-103.3 63.1-159.6 155.3-159.6 44.2 0 82.1 3.3 93.2 4.8v107.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFastBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFastForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M480 580H372a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h108v108a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V644h108a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H544V472a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v108zm374.6-291.3c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileExcel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM575.34 477.84l-61.22 102.3L452.3 477.8a12 12 0 0 0-10.27-5.79h-38.44a12 12 0 0 0-6.4 1.85 12 12 0 0 0-3.75 16.56l82.34 130.42-83.45 132.78a12 12 0 0 0-1.84 6.39 12 12 0 0 0 12 12h34.46a12 12 0 0 0 10.21-5.7l62.7-101.47 62.3 101.45a12 12 0 0 0 10.23 5.72h37.48a12 12 0 0 0 6.48-1.9 12 12 0 0 0 3.62-16.58l-83.83-130.55 85.3-132.47a12 12 0 0 0 1.9-6.5 12 12 0 0 0-12-12h-35.7a12 12 0 0 0-10.29 5.84z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 784a40 40 0 1 0 0-80 40 40 0 0 0 0 80zm32-152V448a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v184a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM400 402c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8 8 0 0 1 12.6 0l136.5 174c4.3 5.2.5 12.9-6.1 12.9zm-94-370V137.8L790.2 326H602z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileMarkdown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM426.13 600.93l59.11 132.97a16 16 0 0 0 14.62 9.5h24.06a16 16 0 0 0 14.63-9.51l59.1-133.35V758a16 16 0 0 0 16.01 16H641a16 16 0 0 0 16-16V486a16 16 0 0 0-16-16h-34.75a16 16 0 0 0-14.67 9.62L512.1 662.2l-79.48-182.59a16 16 0 0 0-14.67-9.61H383a16 16 0 0 0-16 16v272a16 16 0 0 0 16 16h27.13a16 16 0 0 0 16-16V600.93z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFilePdf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM633.22 637.26c-15.18-.5-31.32.67-49.65 2.96-24.3-14.99-40.66-35.58-52.28-65.83l1.07-4.38 1.24-5.18c4.3-18.13 6.61-31.36 7.3-44.7.52-10.07-.04-19.36-1.83-27.97-3.3-18.59-16.45-29.46-33.02-30.13-15.45-.63-29.65 8-33.28 21.37-5.91 21.62-2.45 50.07 10.08 98.59-15.96 38.05-37.05 82.66-51.2 107.54-18.89 9.74-33.6 18.6-45.96 28.42-16.3 12.97-26.48 26.3-29.28 40.3-1.36 6.49.69 14.97 5.36 21.92 5.3 7.88 13.28 13 22.85 13.74 24.15 1.87 53.83-23.03 86.6-79.26 3.29-1.1 6.77-2.26 11.02-3.7l11.9-4.02c7.53-2.54 12.99-4.36 18.39-6.11 23.4-7.62 41.1-12.43 57.2-15.17 27.98 14.98 60.32 24.8 82.1 24.8 17.98 0 30.13-9.32 34.52-23.99 3.85-12.88.8-27.82-7.48-36.08-8.56-8.41-24.3-12.43-45.65-13.12zM385.23 765.68v-.36l.13-.34a54.86 54.86 0 0 1 5.6-10.76c4.28-6.58 10.17-13.5 17.47-20.87 3.92-3.95 8-7.8 12.79-12.12 1.07-.96 7.91-7.05 9.19-8.25l11.17-10.4-8.12 12.93c-12.32 19.64-23.46 33.78-33 43-3.51 3.4-6.6 5.9-9.1 7.51a16.43 16.43 0 0 1-2.61 1.42c-.41.17-.77.27-1.13.3a2.2 2.2 0 0 1-1.12-.15 2.07 2.07 0 0 1-1.27-1.91zM511.17 547.4l-2.26 4-1.4-4.38c-3.1-9.83-5.38-24.64-6.01-38-.72-15.2.49-24.32 5.29-24.32 6.74 0 9.83 10.8 10.07 27.05.22 14.28-2.03 29.14-5.7 35.65zm-5.81 58.46l1.53-4.05 2.09 3.8c11.69 21.24 26.86 38.96 43.54 51.31l3.6 2.66-4.39.9c-16.33 3.38-31.54 8.46-52.34 16.85 2.17-.88-21.62 8.86-27.64 11.17l-5.25 2.01 2.8-4.88c12.35-21.5 23.76-47.32 36.05-79.77zm157.62 76.26c-7.86 3.1-24.78.33-54.57-12.39l-7.56-3.22 8.2-.6c23.3-1.73 39.8-.45 49.42 3.07 4.1 1.5 6.83 3.39 8.04 5.55a4.64 4.64 0 0 1-1.36 6.31 6.7 6.7 0 0 1-2.17 1.28z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFilePpt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM468.53 760v-91.54h59.27c60.57 0 100.2-39.65 100.2-98.12 0-58.22-39.58-98.34-99.98-98.34H424a12 12 0 0 0-12 12v276a12 12 0 0 0 12 12h32.53a12 12 0 0 0 12-12zm0-139.33h34.9c47.82 0 67.19-12.93 67.19-50.33 0-32.05-18.12-50.12-49.87-50.12h-52.22v100.45z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h384a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320zm0 136a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h184a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileUnknown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm110 227a32 32 0 1 0 0-64 32 32 0 0 0 0 64z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileWord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 566.1l52.81 197a12 12 0 0 0 11.6 8.9h31.77a12 12 0 0 0 11.6-8.88l74.37-276a12 12 0 0 0 .4-3.12 12 12 0 0 0-12-12h-35.57a12 12 0 0 0-11.7 9.31l-45.78 199.1-49.76-199.32A12 12 0 0 0 528.1 472h-32.2a12 12 0 0 0-11.64 9.1L434.6 680.01 388.5 481.3a12 12 0 0 0-11.68-9.29h-35.39a12 12 0 0 0-3.11.41 12 12 0 0 0-8.47 14.7l74.17 276A12 12 0 0 0 415.6 772h31.99a12 12 0 0 0 11.59-8.9l52.81-197z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFileZip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM296 136v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm0 64v160h128V584H296zm48 48h32v64h-32v-64z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFire (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFolderAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM632 577c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.2 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.8 0 7 3.2 7 7.1V528h84.5c4.1 0 7.5 3.2 7.5 7v42z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zm-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFormatPainter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683558243\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M840 192h-56v-72c0-13.3-10.7-24-24-24H168c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h592c13.3 0 24-10.7 24-24V256h32v200H465c-22.1 0-40 17.9-40 40v136h-44c-4.4 0-8 3.6-8 8v228c0 1.1 0.2 2.2 0.6 3.1-0.4 1.6-0.6 3.2-0.6 4.9 0 46.4 37.6 84 84 84s84-37.6 84-84c0-1.7-0.2-3.3-0.6-4.9 0.4-1 0.6-2 0.6-3.1V640c0-4.4-3.6-8-8-8h-44V520h351c22.1 0 40-17.9 40-40V232c0-22.1-17.9-40-40-40z\"},\"child\":[]}]})(props);\n};\nexport function AiFillForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFund (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-92.3 194.4l-297 297.2a8.03 8.03 0 0 1-11.3 0L410.9 541.1 238.4 713.7a8.03 8.03 0 0 1-11.3 0l-36.8-36.8a8.03 8.03 0 0 1 0-11.3l214.9-215c3.1-3.1 8.2-3.1 11.3 0L531 565l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.2 3 3.2 8.1.1 11.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillFunnelPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M336.7 586h350.6l84.9-148H251.8zm543.4-432H143.9c-24.5 0-39.8 26.7-27.5 48L215 374h594l98.7-172c12.2-21.3-3.1-48-27.6-48zM349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V650H349v188z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M160 894c0 17.7 14.3 32 32 32h286V550H160v344zm386 32h286c17.7 0 32-14.3 32-32V550H546v376zm334-616H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v140h366V310h68v172h366V342c0-17.7-14.3-32-32-32zm-402-4h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm138 0h-70v-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGithub (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGitlab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M910.5 553.2l-109-370.8c-6.8-20.4-23.1-34.1-44.9-34.1s-39.5 12.3-46.3 32.7l-72.2 215.4H386.2L314 181.1c-6.8-20.4-24.5-32.7-46.3-32.7s-39.5 13.6-44.9 34.1L113.9 553.2c-4.1 13.6 1.4 28.6 12.3 36.8l385.4 289 386.7-289c10.8-8.1 16.3-23.1 12.2-36.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGolden (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGoogleCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm167 633.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9C281.5 589 272 551.6 272 512s9.5-77 26.1-110.1c40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGooglePlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm36.5 558.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGooglePlusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM548.5 622.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillGoogleSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM679 697.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9A245.02 245.02 0 0 1 272 512c0-39.6 9.5-77 26.1-110.1 40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM456 216c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm576-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm96-152c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHighlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHourglass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194z\"},\"child\":[]}]})(props);\n};\nexport function AiFillHtml5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M145.2 96l66 746.6L512 928l299.6-85.4L878.9 96H145.2zm595 177.1l-4.8 47.2-1.7 19.5H382.3l8.2 94.2h335.1l-3.3 24.3-21.2 242.2-1.7 16.2-187 51.6v.3h-1.2l-.3.1v-.1h-.1l-188.6-52L310.8 572h91.1l6.5 73.2 102.4 27.7h.4l102-27.6 11.4-118.6H510.9v-.1H306l-22.8-253.5-1.7-24.3h460.3l-1.6 24.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillIdcard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillIeCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillIeSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM765.9 556.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zm-72.3-272.5c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillInfoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillInstagram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 378.7c-73.4 0-133.3 59.9-133.3 133.3S438.6 645.3 512 645.3 645.3 585.4 645.3 512 585.4 378.7 512 378.7zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zM512 717.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 306.9 512 306.9 717.1 398.5 717.1 512 625.5 717.1 512 717.1zm213.5-370.7c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.4 47.9 47.9a47.84 47.84 0 0 1-47.9 47.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillInsurance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M519.9 358.8h97.9v41.6h-97.9zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM411.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm296.5-49.2l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a5.9 5.9 0 0 1-8.9-1.4L430 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillInteraction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLayout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M384 912h496c17.7 0 32-14.3 32-32V340H384v572zm496-800H384v164h528V144c0-17.7-14.3-32-32-32zm-768 32v736c0 17.7 14.3 32 32 32h176V112H144c-17.7 0-32 14.3-32 32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm104 316.9c0 10.2-4.9 19.9-13.2 25.9L457.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178a8 8 0 0 1 12.7 6.5v46.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM624 380.9c0 10.2-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLinkedin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM349.3 793.7H230.6V411.9h118.7v381.8zm-59.3-434a68.8 68.8 0 1 1 68.8-68.8c-.1 38-30.9 68.8-68.8 68.8zm503.7 434H675.1V608c0-44.3-.8-101.2-61.7-101.2-61.7 0-71.2 48.2-71.2 98v188.9H423.7V411.9h113.8v52.2h1.6c15.8-30 54.5-61.7 112.3-61.7 120.2 0 142.3 79.1 142.3 181.9v209.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMacCommand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569747879816\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M624 672c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48h-48v48zM720 352c0-26.5-21.5-48-48-48s-48 21.5-48 48v48h48c26.5 0 48-21.5 48-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 64H96c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM672 560c61.9 0 112 50.1 112 112s-50.1 112-112 112-112-50.1-112-112v-48h-96v48c0 61.9-50.1 112-112 112s-112-50.1-112-112 50.1-112 112-112h48v-96h-48c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112v48h96v-48c0-61.9 50.1-112 112-112s112 50.1 112 112-50.1 112-112 112h-48v96h48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M464 464h96v96h-96zM352 304c-26.5 0-48 21.5-48 48s21.5 48 48 48h48v-48c0-26.5-21.5-48-48-48zM304 672c0 26.5 21.5 48 48 48s48-21.5 48-48v-48h-48c-26.5 0-48 21.5-48 48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-80.8 108.9L531.7 514.4c-7.8 6.1-18.7 6.1-26.5 0L189.6 268.9A7.2 7.2 0 0 1 194 256h648.8a7.2 7.2 0 0 1 4.4 12.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMedicineBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48zm4-372H360v-72h304v72z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMediumCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm256 253.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMediumSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 317.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMeh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMerge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M112 0c61.856 0 112 50.144 112 112 0 49.262-31.803 91.095-75.998 106.088L148 502.371l386.488-126.553.014-95.914C489.009 265.664 456 223.187 456 173c0-61.856 50.144-112 112-112s112 50.144 112 112c0 48.327-30.608 89.505-73.496 105.206l-.018 113.037c-.003 21.932-14.1 41.379-34.944 48.204L148 578.132l.002 27.78c43.64 14.805 75.197 55.78 75.983 104.236L224 712c0 61.856-50.144 112-112 112S0 773.856 0 712c0-49.262 31.804-91.096 75.999-106.088V218.088C31.804 203.096 0 161.262 0 112 0 50.144 50.144 0 112 0\",\"transform\":\"matrix(1 0 0 -1 172 924)\"},\"child\":[]}]})(props);\n};\nexport function AiFillMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M924.3 338.4a447.57 447.57 0 0 0-96.1-143.3 443.09 443.09 0 0 0-143-96.3A443.91 443.91 0 0 0 512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 0 0-141.7 96.5 445 445 0 0 0-95 142.8A449.89 449.89 0 0 0 65 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 0 0 199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 0 0 827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMinusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMinusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMobile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMoneyCollect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M911.5 699.7a8 8 0 0 0-10.3-4.8L840 717.2V179c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V762c0 3.3 2.1 6.3 5.3 7.5L501 909.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zm-243.8-377L564 514.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V703c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 322.8c-2.1-3.8-.7-8.7 3.2-10.8 1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 484.2h3.3L599 315.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMoon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M489.493 111.658c30.658-1.792 45.991 36.44 22.59 56.329C457.831 214.095 426 281.423 426 354c0 134.757 109.243 244 244 244 72.577 0 139.905-31.832 186.014-86.084 19.868-23.377 58.064-8.102 56.332 22.53C900.4 745.823 725.141 912 512.5 912 291.31 912 112 732.69 112 511.5c0-211.39 164.287-386.024 374.198-399.649l.206-.013z\"},\"child\":[]}]})(props);\n};\nexport function AiFillMuted (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M771.915 115c-5.863 0-11.877 1.644-17.42 5.267L400 351.966H236c-8.837 0-16 7.165-16 16.003V656.03c0 8.838 7.163 16.003 16 16.003h164l354.495 231.7c5.542 3.621 11.558 5.267 17.42 5.267C788.566 909 804 895.749 804 876.94V147.06c0-18.808-15.436-32.06-32.085-32.06\"},\"child\":[]}]})(props);\n};\nexport function AiFillNotification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillOpenAI (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M366.609 0C292.567 0 226.882 42.382 193.68 104.575v237.284l92.265 56.484 3.386-235.699 188.997-127.45C446.12 12.695 407.577 0 366.608 0M569.51 62.248c-13.17 0-26.054 1.758-38.8 4.359L344.2 192.363l-1.37 96.146 186.584-125.253 231.22 137.284c3.08-13.888 4.863-28.051 4.863-42.327 0-108.044-87.93-195.965-195.986-195.965m-431.168 91.75C58.343 178.696 0 253.216 0 341.21c0 27.924 5.906 54.829 16.788 79.36l245.487 139.769 90.571-56.124-214.503-131.376zm392.872 74.676-72.702 48.848 203.984 128.062 25.795 235.41C758.422 611.115 807 541.971 807 461.095c0-27.555-5.855-54.129-16.572-78.53zM408.22 311.275l-66.362 44.56-1.045 76.117 64.704 39.662 69.532-43.048-1.837-76.477zm121.194 76.117 5.872 248.343-201.282 119.164C368.72 783.635 412.631 800 458.837 800c79.224 0 147.798-46.522 178.621-114.986L610.402 438.22zm-52.852 105.295L263.428 624.676 60.56 509.15c-3.357 14.46-5.224 29.262-5.224 44.164 0 102.935 79.847 187.408 180.819 195.173l243.036-143.876z\",\"transform\":\"translate(109 112)\"},\"child\":[]}]})(props);\n};\nexport function AiFillPauseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm166.6 246.8L567.5 515.6h62c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V603h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V717c0 4.4-3.6 8-8 8h-54.3c-4.4 0-8-3.6-8-8v-68.1h-81.7c-4.4 0-8-3.6-8-8V611c0-4.4 3.6-8 8-8h81.7v-41.5h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h61.4L345.4 310.8a8.07 8.07 0 0 1 7-11.9h60.7c3 0 5.8 1.7 7.1 4.4l90.6 180h3.4l90.6-180a8 8 0 0 1 7.1-4.4h59.5c4.4 0 8 3.6 8 8 .2 1.4-.2 2.7-.8 3.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.6 230.2L779.1 123.8a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L549.8 238.4a80.83 80.83 0 0 0-23.8 57.3c0 21.7 8.5 42.1 23.8 57.4l83.8 83.8A393.82 393.82 0 0 1 553.1 553 395.34 395.34 0 0 1 437 633.8L353.2 550a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L123.8 664.5a80.89 80.89 0 0 0-23.8 57.4c0 21.7 8.5 42.1 23.8 57.4l106.3 106.3c24.4 24.5 58.1 38.4 92.7 38.4 7.3 0 14.3-.6 21.2-1.8 134.8-22.2 268.5-93.9 376.4-201.7C828.2 612.8 899.8 479.2 922.3 344c6.8-41.3-6.9-83.8-36.7-113.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPicture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM338 304c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm513.9 437.1a8.11 8.11 0 0 1-5.2 1.9H177.2c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2l170.3-202c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l99.4 118 158.1-187.5c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l229.6 271.6c2.6 3.3 2.2 8.4-1.2 11.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M863.1 518.5H505.5V160.9c0-4.4-3.6-8-8-8h-26a398.57 398.57 0 0 0-282.5 117 397.47 397.47 0 0 0-85.6 127C82.6 446.2 72 498.5 72 552.5S82.6 658.7 103.4 708c20.1 47.5 48.9 90.3 85.6 127 36.7 36.7 79.4 65.5 127 85.6a396.64 396.64 0 0 0 155.6 31.5 398.57 398.57 0 0 0 282.5-117c36.7-36.7 65.5-79.4 85.6-127a396.64 396.64 0 0 0 31.5-155.6v-26c-.1-4.4-3.7-8-8.1-8zM951 463l-2.6-28.2c-8.5-92-49.3-178.8-115.1-244.3A398.5 398.5 0 0 0 588.4 75.6L560.1 73c-4.7-.4-8.7 3.2-8.7 7.9v383.7c0 4.4 3.6 8 8 8l383.6-1c4.7-.1 8.4-4 8-8.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPinterest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448 0C200.974 0 0 200.974 0 448c0 192.526 122.082 357.042 292.882 420.282-4.919-43.857-4.147-115.682 3.97-150.457 7.602-32.666 49.11-208.167 49.11-208.167S333.43 484.563 333.43 447.5c0-58.244 33.744-101.7 75.767-101.7 35.742 0 52.977 26.834 52.977 58.984 0 35.951-22.857 89.652-34.696 139.422-9.873 41.702 20.907 75.703 62.012 75.703 74.431 0 131.644-78.49 131.644-191.77 0-100.266-72.03-170.38-174.906-170.38-119.144 0-189.081 89.377-189.081 181.752 0 35.983 13.852 74.575 31.167 95.579 3.414 4.155 3.914 7.78 2.9 12-3.174 13.223-10.228 41.669-11.63 47.499-1.82 7.683-6.073 9.278-13.998 5.589-52.314-24.354-85.012-100.813-85.012-162.246 0-132.093 95.965-253.428 276.718-253.428 145.286 0 258.18 103.504 258.18 241.88 0 144.334-91.02 260.482-217.316 260.482-42.441 0-82.323-22.05-95.965-48.096 0 0-21.003 79.956-26.11 99.558-8.813 33.9-46.539 104.13-65.477 136.03A446.164 446.164 0 0 0 448 896c247.035 0 448-200.965 448-448C896 200.974 695.035 0 448 0\",\"transform\":\"translate(64 64)\"},\"child\":[]}]})(props);\n};\nexport function AiFillPlayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm144.1 454.9L437.7 677.8a8.02 8.02 0 0 1-12.7-6.5V353.7a8 8 0 0 1 12.7-6.5L656.1 506a7.9 7.9 0 0 1 0 12.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPlaySquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM641.7 520.8L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPlusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPoundCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm146 658c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8V722z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPrinter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M732 120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v148h440V120zm120 212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM664 844H360V568h304v276zm164-360c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z\"},\"child\":[]}]})(props);\n};\nexport function AiFillProduct (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M160 144h304c8.837 0 16 7.163 16 16v304c0 8.837-7.163 16-16 16H160c-8.837 0-16-7.163-16-16V160c0-8.837 7.163-16 16-16m564.314-25.333 181.019 181.02c6.248 6.248 6.248 16.378 0 22.627l-181.02 181.019c-6.248 6.248-16.378 6.248-22.627 0l-181.019-181.02c-6.248-6.248-6.248-16.378 0-22.627l181.02-181.019c6.248-6.248 16.378-6.248 22.627 0M160 544h304c8.837 0 16 7.163 16 16v304c0 8.837-7.163 16-16 16H160c-8.837 0-16-7.163-16-16V560c0-8.837 7.163-16 16-16m400 0h304c8.837 0 16 7.163 16 16v304c0 8.837-7.163 16-16 16H560c-8.837 0-16-7.163-16-16V560c0-8.837 7.163-16 16-16\"},\"child\":[]}]})(props);\n};\nexport function AiFillProfile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM380 696c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm304 272c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiFillProject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPropertySafety (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM648.3 332.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillPushpin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillQqCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm210.5 612.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillQqSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM722.5 676.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillQuestionCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 708c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRead (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM404 553.5c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm416 140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45z\"},\"child\":[]}]})(props);\n};\nexport function AiFillReconciliation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M676 623c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zm204-455H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zM448 848H176V616h272v232zm0-296H176v-88h272v88zm20-272v-48h72v-56h64v56h72v48H468zm180 168v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8zm28 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-245c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96zm-92 61c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRedEnvelope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM647 470.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.6-3.6 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4l-87.5-161c-2.2-4.1-.7-9.1 3.4-11.4 1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.9 141.8 71.9-141.9a8.5 8.5 0 0 1 7.5-4.6h47.8c4.6 0 8.4 3.8 8.4 8.4-.1 1.5-.5 2.9-1.1 4.1zM512.6 323L289 148h446L512.6 323z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRedditCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm245 477.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zm-171.3 83c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm72 108a36 36 0 1 0 72 0 36 36 0 1 0-72 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRedditSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm289.7 184.9c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM757 541.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zM584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM368 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zM508 704c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zM291 256l22.4-76h397.2l22.4 76H291zm137 304a80 80 0 1 0 160 0 80 80 0 1 0-160 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm154.7 454.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM658.7 518.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRobot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569682613478\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM300 328c0-33.1 26.9-60 60-60s60 26.9 60 60-26.9 60-60 60-60-26.9-60-60z m372 248c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v60z m-8-188c-33.1 0-60-26.9-60-60s26.9-60 60-60 60 26.9 60 60-26.9 60-60 60zM799 864H225c-13.8 0-25 14.3-25 32v56c0 4.4 2.8 8 6.2 8h611.5c3.4 0 6.2-3.6 6.2-8v-56c0.1-17.7-11.1-32-24.9-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillRocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zM512 352a48.01 48.01 0 0 1 0 96 48.01 48.01 0 0 1 0-96zm116.1 432.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSafetyCertificate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM694.5 340.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M893.3 293.3L730.7 130.7c-12-12-28.3-18.7-45.3-18.7H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 176h256v112H384V176zm128 554c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zm0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSchedule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.5-91.3l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.2c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.5 12.9 6.6l52.8 73.1 103.7-143.7c3-4.2 7.8-6.6 12.9-6.6H792c6.5.1 10.3 7.5 6.5 12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSecurityScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM626.8 554c-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0 56.3 56.3 56.3 147.5 0 203.8zm-158.54-45.27a80.1 80.1 0 1 0 113.27-113.28 80.1 80.1 0 1 0-113.27 113.28z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSetting (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 0 0-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a442.5 442.5 0 0 0-79.6-137.7l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.3a353.44 353.44 0 0 0-98.9 57.3l-81.8-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a445.93 445.93 0 0 0-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0 0 25.8 25.7l2.7.5a448.27 448.27 0 0 0 158.8 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillShop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h274V736h128v176h274c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zm-72 568H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm0-568.1H214v-88h596v88z\"},\"child\":[]}]})(props);\n};\nexport function AiFillShopping (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-208 0H400v-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSignal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569682885975\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M584 352H440c-17.7 0-32 14.3-32 32v544c0 17.7 14.3 32 32 32h144c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32zM892 64H748c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h144c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM276 640H132c-17.7 0-32 14.3-32 32v256c0 17.7 14.3 32 32 32h144c17.7 0 32-14.3 32-32V672c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSignature (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33.713 640c1.994 0 3.988-.2 5.982-.498l168.19-29.508c1.994-.399 3.888-1.296 5.284-2.792l423.915-423.875a9.927 9.927 0 0 0 0-14.056L470.888 2.891C468.994.997 466.5 0 463.809 0s-5.184.997-7.078 2.891L32.816 426.766c-1.495 1.496-2.393 3.29-2.791 5.284L.514 600.224c-1.894 11.066 1.495 21.932 9.372 29.807 6.58 6.48 14.954 9.969 23.827 9.969M486.826 455.928c27.691-14.812 57.293-20.852 85.545-15.519 32.365 6.11 59.72 26.534 78.96 59.406 29.974 51.211 21.642 102.332-18.484 144.254-17.577 18.364-41.07 35.013-69.996 50.297l-.293.152.848.26c13.153 3.956 27.085 6.1 41.54 6.21l1.174.005c61.068 0 100.981-22.104 125.285-67.876 9.325-17.56 31.119-24.237 48.679-14.913 17.56 9.325 24.237 31.119 14.912 48.68-37.285 70.218-102.092 106.109-188.876 106.109-47.687 0-91.94-15.03-128.188-41.368l-1.056-.774-1.36.473c-46.18 15.996-98.732 29.945-155.37 41.932l-2.239.472c-48.571 10.217-97.257 18.377-139.154 23.957-19.709 2.625-37.813-11.224-40.438-30.932-2.625-19.709 11.224-37.813 30.932-40.438 40.196-5.353 87.126-13.22 133.84-23.045 42.799-9.002 83.011-19.134 119.357-30.342l.234-.074-.436-.693c-16.464-26.452-25.857-55.432-26.142-83.24l-.007-1.303c0-49.907 39.555-104.315 90.733-131.69m72.188 55.231c-10.74-2.027-24.099.699-38.228 8.257-29.546 15.804-52.693 47.643-52.693 68.202 0 18.206 8.889 40.146 24.71 59.736l.238.293 1.223-.514c39.17-16.581 68.483-34.271 85.929-52.186l.64-.663c18.735-19.573 21.386-35.842 8.36-58.1-9.059-15.475-19.03-22.92-30.18-25.025\",\"transform\":\"translate(112 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiFillSketchCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M582.3 625.6l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zm-274.7 36L512 684.5l114.4-225.2zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm286.7 380.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-190.5-20.9L512 326.1l-96.2 97.2zM420.3 301.1l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8zm-222.4 7.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSketchSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M608.2 423.3L512 326.1l-96.2 97.2zm-25.9 202.3l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-81.3 332.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-401.1 15.1L512 684.5l114.4-225.2zm-16.3-151.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3zm126.5-158.2l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSkin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSkype (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-370 162.9c-134.2 0-194.2-66-194.2-115.4 0-25.4 18.7-43.1 44.5-43.1 57.4 0 42.6 82.5 149.7 82.5 54.9 0 85.2-29.8 85.2-60.3 0-18.3-9-38.7-45.2-47.6l-119.4-29.8c-96.1-24.1-113.6-76.1-113.6-124.9 0-101.4 95.5-139.5 185.2-139.5 82.6 0 180 45.7 180 106.5 0 26.1-22.6 41.2-48.4 41.2-49 0-40-67.8-138.7-67.8-49 0-76.1 22.2-76.1 53.9s38.7 41.8 72.3 49.5l88.4 19.6c96.8 21.6 121.3 78.1 121.3 131.3 0 82.3-63.3 143.9-191 143.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSlackCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4-13.3 0-26.1-5.3-35.6-14.8-9.4-9.5-14.7-22.3-14.7-35.6 0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4 13.3 0 26.1 5.3 35.6 14.8s14.7 22.3 14.7 35.6v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm83.7-50.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM579.3 765c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8S529 593.6 529 580.2c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSlackSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4-13.3 0-26.1-5.3-35.6-14.8-9.4-9.5-14.7-22.3-14.7-35.6 0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4 13.3 0 26.1 5.3 35.6 14.8s14.7 22.3 14.7 35.6v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8-9.4-9.5-14.7-22.3-14.7-35.6 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSliders (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-584-72h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm292 180h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSnippets (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 486H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zm174 132H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSpotify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M657.417 631.167c0-12.445-5.834-22.361-17.5-29.75-75.056-44.723-161.973-67.084-260.75-67.084-51.723 0-107.528 6.611-167.417 19.834-16.333 3.5-24.5 13.61-24.5 30.333 0 7.778 2.625 14.486 7.875 20.125 5.25 5.639 12.153 8.458 20.708 8.458 1.945 0 9.14-1.555 21.584-4.666 51.333-10.5 98.583-15.75 141.75-15.75 87.889 0 165.083 20.027 231.583 60.083 7.389 4.278 13.806 6.417 19.25 6.417 7.389 0 13.806-2.625 19.25-7.875 5.444-5.25 8.167-11.959 8.167-20.125m56-125.417c0-15.556-6.806-27.417-20.417-35.583-92.167-54.834-198.722-82.25-319.667-82.25-59.5 0-118.416 8.166-176.75 24.5-18.666 5.055-28 17.5-28 37.333 0 9.722 3.403 17.986 10.209 24.792 6.805 6.805 15.07 10.208 24.791 10.208 2.723 0 9.917-1.556 21.584-4.667 47.444-12.833 96.25-19.25 146.416-19.25 108.5 0 203.39 24.111 284.667 72.334 9.333 5.055 16.722 7.583 22.167 7.583 9.722 0 17.986-3.403 24.791-10.208 6.806-6.806 10.209-15.07 10.209-24.792m63-144.667c0-18.277-7.778-31.889-23.334-40.833-49-28.389-105.972-49.875-170.916-64.458-64.945-14.584-131.64-21.875-200.084-21.875-79.333 0-150.11 9.139-212.333 27.416-8.944 2.723-16.43 7.68-22.458 14.875-6.028 7.195-9.042 16.625-9.042 28.292 0 12.056 3.986 22.167 11.958 30.333 7.973 8.167 17.986 12.25 30.042 12.25 4.278 0 12.056-1.555 23.333-4.666 51.723-14.39 111.417-21.584 179.084-21.584 61.833 0 122.014 6.611 180.541 19.834 58.528 13.222 107.82 31.694 147.875 55.416 8.167 4.667 15.945 7 23.334 7 11.277 0 21.097-3.986 29.458-11.958 8.361-7.972 12.542-17.986 12.542-30.042M896 448c0 81.278-20.028 156.236-60.083 224.875-40.056 68.639-94.403 122.986-163.042 163.042C604.236 875.972 529.278 896 448 896c-81.278 0-156.236-20.028-224.875-60.083-68.639-40.056-122.986-94.403-163.042-163.042C20.028 604.236 0 529.278 0 448c0-81.278 20.028-156.236 60.083-224.875 40.056-68.639 94.403-122.986 163.042-163.042C291.764 20.028 366.722 0 448 0c81.278 0 156.236 20.028 224.875 60.083 68.639 40.056 122.986 94.403 163.042 163.042C875.972 291.764 896 366.722 896 448\",\"transform\":\"translate(64 64)\"},\"child\":[]}]})(props);\n};\nexport function AiFillStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillStepBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8\"},\"child\":[]}]})(props);\n};\nexport function AiFillStepForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8\"},\"child\":[]}]})(props);\n};\nexport function AiFillStop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm234.8 736.5L223.5 277.2c16-19.7 34-37.7 53.7-53.7l523.3 523.3c-16 19.6-34 37.7-53.7 53.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M548 818v126c0 8.837-7.163 16-16 16h-40c-8.837 0-16-7.163-16-16V818c15.845 1.643 27.845 2.464 36 2.464 8.155 0 20.155-.821 36-2.464m205.251-115.66 89.096 89.095c6.248 6.248 6.248 16.38 0 22.627l-28.285 28.285c-6.248 6.248-16.379 6.248-22.627 0L702.34 753.25c12.365-10.043 21.431-17.947 27.198-23.713 5.766-5.767 13.67-14.833 23.713-27.198m-482.502 0c10.043 12.365 17.947 21.431 23.713 27.198 5.767 5.766 14.833 13.67 27.198 23.713l-89.095 89.096c-6.248 6.248-16.38 6.248-22.627 0l-28.285-28.285c-6.248-6.248-6.248-16.379 0-22.627zM512 278c129.235 0 234 104.765 234 234S641.235 746 512 746 278 641.235 278 512s104.765-234 234-234M206 476c-1.643 15.845-2.464 27.845-2.464 36 0 8.155.821 20.155 2.464 36H80c-8.837 0-16-7.163-16-16v-40c0-8.837 7.163-16 16-16zm738 0c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H818c1.643-15.845 2.464-27.845 2.464-36 0-8.155-.821-20.155-2.464-36ZM814.062 180.653l28.285 28.285c6.248 6.248 6.248 16.379 0 22.627L753.25 320.66c-10.043-12.365-17.947-21.431-23.713-27.198-5.767-5.766-14.833-13.67-27.198-23.713l89.095-89.096c6.248-6.248 16.38-6.248 22.627 0m-581.497 0 89.095 89.096c-12.365 10.043-21.431 17.947-27.198 23.713-5.766 5.767-13.67 14.833-23.713 27.198l-89.096-89.095c-6.248-6.248-6.248-16.38 0-22.627l28.285-28.285c6.248-6.248 16.379-6.248 22.627 0M532 64c8.837 0 16 7.163 16 16v126c-15.845-1.643-27.845-2.464-36-2.464-8.155 0-20.155.821-36 2.464V80c0-8.837 7.163-16 16-16z\"},\"child\":[]}]})(props);\n};\nexport function AiFillSwitcher (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTablet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM699 387c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTags (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm122.7-533.4c18.7-18.7 49.1-18.7 67.9 0 18.7 18.7 18.7 49.1 0 67.9-18.7 18.7-49.1 18.7-67.9 0-18.7-18.7-18.7-49.1 0-67.9zm283.8 282.9l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTaobaoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTaobaoSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillThunderbolt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTikTok (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M800 112.962C800 50.575 749.425 0 687.038 0H112.962C50.575 0 0 50.575 0 112.962v574.076C0 749.426 50.575 800 112.962 800h574.076C749.425 800 800 749.426 800 687.038zM662.759 348.916c-51.615.577-99.71-15.027-141.938-43.927v202.874c0 90.166-61.72 167.62-148.996 187.848-119.068 27.165-219.864-58.954-232.577-161.835-13.294-102.884 52.322-193.051 152.892-213.281 19.651-4.045 49.209-4.045 64.458-.577v108.661c-4.692-1.153-9.086-2.31-13.709-2.888-39.304-6.937-77.371 12.715-92.977 48.55-15.605 35.838-5.16 77.451 26.629 101.73 26.586 20.806 56.085 23.694 86.14 9.822 30.057-13.291 46.21-37.567 49.676-70.512.578-4.622.546-9.826.546-15.028V110.206c0-10.981.086-10.502 11.068-10.502h86.12c6.36 0 8.673.915 9.25 8.433 4.621 67.047 55.526 124.147 120.838 132.818 6.937 1.155 14.369 1.613 22.58 2.19z\",\"transform\":\"translate(112 112)\"},\"child\":[]}]})(props);\n};\nexport function AiFillTool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 0 0 419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTrademarkCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm164.7 660.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H378c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7zM523.9 357h-83.4v148H522c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTrophy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.6 630.2 359 721.8 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.8 758.4 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6c-37.1-11.9-64-46.7-64-87.6V232h64v207.6zM840 352c0 41-26.9 75.8-64 87.6V232h64v120z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTruck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M608 192c17.673 0 32 14.327 32 32v160h174.815a32 32 0 0 1 26.676 14.327l113.186 170.846A32 32 0 0 1 960 586.846V672c0 17.673-14.327 32-32 32h-96c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128H384c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128H96c-17.673 0-32-14.327-32-32V224c0-17.673 14.327-32 32-32zM256 640c-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64l1.058-.009C291.916 767.426 320 738.993 320 704c0-35.346-28.654-64-64-64m448 0c-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64l1.058-.009C739.916 767.426 768 738.993 768 704c0-35.346-28.654-64-64-64m93.629-192H640v145.124C658.829 582.234 680.687 576 704 576c47.378 0 88.745 25.741 110.876 64H896v-43.516zM500 448H332c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h168c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12M308 320H204c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h104c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12\"},\"child\":[]}]})(props);\n};\nexport function AiFillTwitch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1042 1042\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"defs\",\"attr\":{},\"child\":[{\"tag\":\"filter\",\"attr\":{\"id\":\"a\",\"width\":\"102.3%\",\"height\":\"102.3%\",\"x\":\"-1.2%\",\"y\":\"-1.2%\",\"filterUnits\":\"objectBoundingBox\"},\"child\":[{\"tag\":\"feOffset\",\"attr\":{\"dy\":\"2\",\"in\":\"SourceAlpha\",\"result\":\"shadowOffsetOuter1\"},\"child\":[]},{\"tag\":\"feGaussianBlur\",\"attr\":{\"in\":\"shadowOffsetOuter1\",\"result\":\"shadowBlurOuter1\",\"stdDeviation\":\"2\"},\"child\":[]},{\"tag\":\"feColorMatrix\",\"attr\":{\"in\":\"shadowBlurOuter1\",\"result\":\"shadowMatrixOuter1\",\"values\":\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\"},\"child\":[]},{\"tag\":\"feMerge\",\"attr\":{},\"child\":[{\"tag\":\"feMergeNode\",\"attr\":{\"in\":\"shadowMatrixOuter1\"},\"child\":[]},{\"tag\":\"feMergeNode\",\"attr\":{\"in\":\"SourceGraphic\"},\"child\":[]}]}]}]},{\"tag\":\"g\",\"attr\":{\"filter\":\"url(#a)\",\"transform\":\"translate(9 9)\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M57.143 0 0 142.857v542.857h171.429V800h114.285L400 685.714h142.857l200-200V0zm314.286 428.571h-85.715V198.214h85.715zm200 0h-85.715V198.214h85.715z\",\"transform\":\"translate(128 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiFillTwitterCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm215.3 337.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillTwitterSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM727.3 401.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillUnlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm178 555h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM690 624h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiFillUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M408 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm352 120V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-72 0H336V184h352v248zM568 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillVideoCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM328 352c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48zm560 273l-104-59.8V458.9L888 399v226z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 464H528V448h320v128zm-268-64a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWarning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWechatWork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M693.333 0H106.667C47.756 0 0 47.756 0 106.667v586.666C0 752.244 47.756 800 106.667 800h586.666C752.244 800 800 752.244 800 693.333V106.667C800 47.756 752.244 0 693.333 0m-98.169 417.862a102.129 102.129 0 0 0 28.09 52.454l2.137 2.062c.409.275.796.573 1.156.902l.555.636.191.022a7.964 7.964 0 0 1-.969 10.818 7.964 7.964 0 0 1-10.853-.178c-1.102-1.05-2.142-2.142-3.24-3.24a102.489 102.489 0 0 0-53.818-28.356l-2.004-.275c-.658-.116-1.342-.387-1.978-.387-16.28-3.785-27.224-19.06-25.574-35.692 1.65-16.632 15.384-29.458 32.09-29.97 16.72-.5 31.213 11.487 33.857 28.004.165 1.085.36 2.156.36 3.2M382.062 571.684a276.782 276.782 0 0 1-61.706.165 267.307 267.307 0 0 1-44.663-8.605l-68.44 34.405c-.329.244-.769.431-1.15.711h-.276a18.289 18.289 0 0 1-27.516-15.902c.027-.587.093-1.17.191-1.742.134-1.97.6-3.898 1.378-5.712l2.747-11.155 9.564-39.56a277.573 277.573 0 0 1-49.253-54.671 185.987 185.987 0 0 1-31.827-103.516 182.422 182.422 0 0 1 19.076-81.044 203.982 203.982 0 0 1 37.19-52.316c38.916-39.938 93.259-65.52 153.094-72.035a278.247 278.247 0 0 1 30.182-1.64c10.498.03 20.987.649 31.414 1.866 59.586 6.783 113.653 32.476 152.266 72.36a202.96 202.96 0 0 1 37 52.476 182.298 182.298 0 0 1 18.17 94.675c-.52-.577-1.019-1.208-1.57-1.76-10.873-10.836-27.75-12.823-40.844-4.808.222-2.254.222-4.538.222-6.783a143.644 143.644 0 0 0-14.76-63.382 164.071 164.071 0 0 0-29.684-42.147c-31.774-32.768-76.467-53.955-125.885-59.55a234.369 234.369 0 0 0-51.67-.143c-49.614 5.413-94.605 26.453-126.574 59.262a163.631 163.631 0 0 0-29.818 41.951 143.436 143.436 0 0 0-15.12 63.925 147.156 147.156 0 0 0 25.289 81.515 170.498 170.498 0 0 0 24.929 29.396 172.311 172.311 0 0 0 17.564 14.747 17.6 17.6 0 0 1 6.351 19.622l-6.489 24.667-1.866 7.146-1.622 6.45a2.849 2.849 0 0 0 2.777 2.88 3.987 3.987 0 0 0 1.925-.68l43.866-25.934 1.432-.774a23.2 23.2 0 0 1 18.248-1.84c11.09 3.23 22.41 5.61 33.863 7.12l5.222.685a227.257 227.257 0 0 0 51.671-.138 226.578 226.578 0 0 0 42.747-9.067c-1.498 15.476 7.943 29.919 22.72 34.756a269.267 269.267 0 0 1-60.365 14.124m89.071-24.875a33.333 33.333 0 0 1-33.764-18.747 33.316 33.316 0 0 1 6.644-38.03 33.156 33.156 0 0 1 18.254-9.312c1.07-.142 2.19-.36 3.24-.36a102.373 102.373 0 0 0 52.475-28.053l2.2-2.33a10.21 10.21 0 0 1 1.57-1.68v-.026a7.969 7.969 0 1 1 10.64 11.809l-3.245 3.24a102.44 102.44 0 0 0-28.56 53.738c-.085.635-.276 1.35-.276 2.009l-.387 2.004a33.293 33.293 0 0 1-28.79 25.738m94.431 93.867c-16.405 2.02-31.809-8.303-36.177-24.245a28.009 28.009 0 0 1-1.098-6.729 102.4 102.4 0 0 0-28.147-52.39l-2.31-2.25a7.191 7.191 0 0 1-1.103-.91l-.542-.6h-.031v.057a7.964 7.964 0 0 1 .964-10.818 7.956 7.956 0 0 1 10.849.178l3.222 3.24a102.289 102.289 0 0 0 53.791 28.355l2.005.272a33.271 33.271 0 1 1-1.423 65.84m113.672-103.338a32.836 32.836 0 0 1-18.276 9.315 26.364 26.364 0 0 1-3.24.36 102.32 102.32 0 0 0-52.444 28.103 49.566 49.566 0 0 0-3.138 3.408l-.68.552h.022l.084.053a7.938 7.938 0 1 1-10.604-11.809l3.24-3.24a102.053 102.053 0 0 0 28.364-53.707 33.262 33.262 0 1 1 62.405-12.093 33.213 33.213 0 0 1-5.733 39.058\",\"transform\":\"translate(112 112)\"},\"child\":[]}]})(props);\n};\nexport function AiFillWechat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWeiboCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWeiboSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z\"},\"child\":[]}]})(props);\n};\nexport function AiFillWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M523.8 191.4v288.9h382V128.1zm0 642.2l382 62.2v-352h-382zM120.1 480.2H443V201.9l-322.9 53.5zm0 290.4L443 823.2V543.8H120.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"none\",\"fillRule\":\"evenodd\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"transform\":\"translate(112 112)\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M711.111 800H88.89C39.8 800 0 760.2 0 711.111V88.89C0 39.8 39.8 0 88.889 0H711.11C760.2 0 800 39.8 800 88.889V711.11C800 760.2 760.2 800 711.111 800\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"nonzero\",\"d\":\"M628 623H484.942L174 179h143.058zm-126.012-37.651h56.96L300.013 216.65h-56.96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"nonzero\",\"d\":\"M219.296885 623 379 437.732409 358.114212 410 174 623z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"nonzero\",\"d\":\"M409 348.387347 429.212986 377 603 177 558.330417 177z\"},\"child\":[]}]}]})(props);\n};\nexport function AiFillYahoo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M937.3 231H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7zm-77.4 450.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm225.2 225.2h-65.3L458.9 559.8v65.3h84.4v56.3H318.2v-56.3h84.4v-65.3L242.9 399.9h-37v-56.3h168.5v56.3h-37l93.4 93.5 28.1-28.1V400h168.8v56.2z\"},\"child\":[]}]})(props);\n};\nexport function AiFillYoutube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M941.3 296.1a112.3 112.3 0 0 0-79.2-79.3C792.2 198 512 198 512 198s-280.2 0-350.1 18.7A112.12 112.12 0 0 0 82.7 296C64 366 64 512 64 512s0 146 18.7 215.9c10.3 38.6 40.7 69 79.2 79.3C231.8 826 512 826 512 826s280.2 0 350.1-18.8c38.6-10.3 68.9-40.7 79.2-79.3C960 658 960 512 960 512s0-146-18.7-215.9zM423 646V378l232 133-232 135z\"},\"child\":[]}]})(props);\n};\nexport function AiFillYuque (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.9-8.1-195-3-195-3s87.4 55.6 52.4 154.7c-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6z\"},\"child\":[]}]})(props);\n};\nexport function AiFillZhihuCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-90.7 477.8l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24-18.1 71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7H421.3zm346.5 167h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z\"},\"child\":[]}]})(props);\n};\nexport function AiFillZhihuSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM432.3 592.8l71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7h-110l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24.1-18.1zm335.5 116h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAccountBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAim (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683657482\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 474H829.8C812.5 327.6 696.4 211.5 550 194.2V72c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v122.2C327.6 211.5 211.5 327.6 194.2 474H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h122.2C211.5 696.4 327.6 812.5 474 829.8V952c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V829.8C696.4 812.5 812.5 696.4 829.8 550H952c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM512 756c-134.8 0-244-109.2-244-244s109.2-244 244-244 244 109.2 244 244-109.2 244-244 244z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 392c-32.1 0-62.1 12.4-84.8 35.2-22.7 22.7-35.2 52.7-35.2 84.8s12.5 62.1 35.2 84.8C449.9 619.4 480 632 512 632s62.1-12.5 84.8-35.2C619.4 574.1 632 544 632 512s-12.5-62.1-35.2-84.8C574.1 404.4 544.1 392 512 392z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M193 796c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563zm-48.1-252.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM832 892H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlibaba (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M602.9 669.8c-37.2 2.6-33.6-17.3-11.5-46.2 50.4-67.2 143.7-158.5 147.9-225.2 5.8-86.6-81.3-113.4-171-113.4-62.4 1.6-127 18.9-171 34.6-151.6 53.5-246.6 137.5-306.9 232-62.4 93.4-43 183.2 91.8 185.8 101.8-4.2 170.5-32.5 239.7-68.2.5 0-192.5 55.1-263.9 14.7-7.9-4.2-15.7-10-17.8-26.2 0-33.1 54.6-67.7 86.6-78.7v-56.7c64.5 22.6 140.6 16.3 205.7-32 2.1 5.8 4.2 13.1 3.7 21h11c2.6-22.6-12.6-44.6-37.8-46.2 7.3 5.8 12.6 10.5 15.2 14.7l-1 1-.5.5c-83.9 58.8-165.3 31.5-173.1 29.9l46.7-45.7-13.1-33.1c92.9-32.5 169.5-56.2 296.9-78.7l-28.5-23 14.7-8.9c75.5 21 126.4 36.7 123.8 76.6-1 6.8-3.7 14.7-7.9 23.1C660.1 466.1 594 538 567.2 569c-17.3 20.5-34.6 39.4-46.7 58.3-13.6 19.4-20.5 37.3-21 53.5 2.6 131.8 391.4-61.9 468-112.9-111.7 47.8-232.9 93.5-364.6 101.9zm85-302.9c2.8 5.2 4.1 11.6 4.1 19.1-.1-6.8-1.4-13.3-4.1-19.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlignCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M264 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm496 424c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496zm144 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlignLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M120 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 424h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm784 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlignRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 158H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 424H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 212H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlipayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64c247.424 0 448 200.576 448 448S759.424 960 512 960 64 759.424 64 512 264.576 64 512 64m32.493 168c-69.66 0-86.056 16.843-86.709 39.079l-.02 1.426v46.623H291.45c-9.92 0-14.28 23.053-14.27 39.31 0 2.696 2.08 4.923 4.77 4.923h175.814v58.301h-116.5c-9.96 0-14.3 23.76-14.271 39.473a4.772 4.772 0 0 0 4.77 4.76l233.448.003c-4.527 41.056-15.432 77.58-30.716 109.315l-1.224 2.494-.32-.275c-60.244-28.47-120.431-52.577-194.407-52.577l-2.61.017c-84.982 1.112-144.718 56.503-145.916 127.04l-.018 1.222.019 2.123c1.238 70.399 63.566 126.452 148.525 126.452 61.245-.008 116.372-16.85 163.457-45.017a138.579 138.579 0 0 0 14.068-7.962c18.09-12.116 34.892-25.955 50.304-41.156l9.452 6.344 12.456 8.322c57.527 38.257 113.763 72.617 169.856 79.27a142.62 142.62 0 0 0 18.314 1.157c43.017 0 54.991-52.68 57.387-95.508l.145-2.84c.392-8.463-6.197-15.595-14.648-15.863-75.468-2.365-136.452-22.043-192.008-46.11l-6.267-2.742c35.146-56.8 56.657-121.816 57.155-186.661l.082-1.083c.401-5.515-3.997-10.198-9.52-10.198H549.33v-58.301h165.732c9.92 0 14.28-22.117 14.27-39.311-.01-2.686-2.089-4.922-4.779-4.922H549.32v-82.35c0-2.656-2.175-4.778-4.827-4.778m-216.5 351.847c54.627 0 107.073 22.417 158.09 52.19l5.77 3.402c-103.575 119.837-247.172 95.903-261.724 26.37a66.89 66.89 0 0 1-1.138-9.83l-.057-2.336.013-.907c.969-40.113 45.337-68.89 99.045-68.89\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAlipay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M557.208 129c3.69 0 6.715 2.952 6.715 6.648v114.55h243.802c3.742 0 6.636 3.111 6.649 6.847.013 23.918-6.052 54.683-19.855 54.683H563.936v81.1h166.189c7.684 0 13.803 6.515 13.245 14.186l-.114 1.506c-.693 90.203-30.622 180.642-79.52 259.653l8.719 3.815c77.295 33.478 162.142 60.85 267.142 64.14 11.758.373 20.925 10.294 20.38 22.067l-.203 3.95C956.441 821.72 939.781 895 879.932 895c-8.805 0-17.288-.55-25.48-1.61-78.043-9.254-156.284-57.05-236.322-110.267l-17.33-11.576-13.15-8.825c-21.444 21.146-44.82 40.396-69.989 57.25-6.193 4.013-12.734 7.703-19.573 11.076-65.509 39.18-142.208 62.608-227.418 62.62-118.203 0-204.921-77.972-206.644-175.9L64 714.815l.026-1.699c1.666-98.12 84.776-175.172 203.013-176.719l3.63-.023c102.924 0 186.663 33.532 270.481 73.137l.444.381 1.703-3.469c21.265-44.145 36.438-94.95 42.736-152.06l-324.798-.005a6.638 6.638 0 0 1-6.636-6.621c-.04-21.857 5.999-54.909 19.854-54.909h162.088v-81.1H191.93c-3.743 0-6.636-3.098-6.636-6.847-.014-22.615 6.052-54.683 19.854-54.683h231.393v-64.853l.029-1.985c.908-30.931 23.72-54.36 120.638-54.36M256.896 619c-74.766 0-136.529 39.934-137.877 95.601L119 715.86l.079 3.241a92.55 92.55 0 0 0 1.584 13.643C140.92 829.238 340.818 862.454 485 696.15l-8.031-4.72C405.949 650.109 332.94 619 256.896 619\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAliwangwang (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10.1 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-66.4 266.5a307.08 307.08 0 0 1-65.9 98c-28.4 28.5-61.3 50.7-97.7 65.9h-.1c-38 16-78.3 24.2-119.9 24.2a306.51 306.51 0 0 1-217.5-90.2c-28.4-28.5-50.6-61.4-65.8-97.8v-.1c-16-37.8-24.1-78.2-24.1-119.9 0-55.4 14.8-109.7 42.8-157l13.2-22.1-9.5-23.9L206 192c14.9.6 35.9 2.1 59.7 5.6 43.8 6.5 82.5 17.5 114.9 32.6l19 8.9 19.9-6.8c31.5-10.8 64.8-16.2 98.9-16.2a306.51 306.51 0 0 1 217.5 90.2c28.4 28.5 50.6 61.4 65.8 97.8l.1.1.1.1c16 37.6 24.1 78 24.2 119.8-.1 41.7-8.3 82-24.3 119.8zM681.1 364.2c-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1s37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1zm-175.2 0c-20.5 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.7 37.1 37.1 37.1 20.5 0 37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAliyun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M959.2 383.9c-.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7a42.58 42.58 0 0 1 32.9 39.7c.1.5.1 216.1 0 216.6a42.58 42.58 0 0 1-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4a42.58 42.58 0 0 1-32.9-39.7c-.1-.6-.1-216.1 0-216.6.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9zm200.9-158.8h171v21.3h-171z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAmazon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M825 768.9c-3.3-.9-7.3-.4-11.9 1.3-61.6 28.2-121.5 48.3-179.7 60.2C507.7 856 385.2 842.6 266 790.3c-33.1-14.6-79.1-39.2-138-74a9.36 9.36 0 0 0-5.3-2c-2-.1-3.7.1-5.3.9-1.6.8-2.8 1.8-3.7 3.1-.9 1.3-1.1 3.1-.4 5.4.6 2.2 2.1 4.7 4.6 7.4 10.4 12.2 23.3 25.2 38.6 39s35.6 29.4 60.9 46.8c25.3 17.4 51.8 32.9 79.3 46.4 27.6 13.5 59.6 24.9 96.1 34.1s73 13.8 109.4 13.8c36.2 0 71.4-3.7 105.5-10.9 34.2-7.3 63-15.9 86.5-25.9 23.4-9.9 45-21 64.8-33 19.8-12 34.4-22.2 43.9-30.3 9.5-8.2 16.3-14.6 20.2-19.4 4.6-5.7 6.9-10.6 6.9-14.9.1-4.5-1.7-7.1-5-7.9zM527.4 348.1c-15.2 1.3-33.5 4.1-55 8.3-21.5 4.1-41.4 9.3-59.8 15.4s-37.2 14.6-56.3 25.4c-19.2 10.8-35.5 23.2-49 37s-24.5 31.1-33.1 52c-8.6 20.8-12.9 43.7-12.9 68.7 0 27.1 4.7 51.2 14.3 72.5 9.5 21.3 22.2 38 38.2 50.4 15.9 12.4 34 22.1 54 29.2 20 7.1 41.2 10.3 63.2 9.4 22-.9 43.5-4.3 64.4-10.3 20.8-5.9 40.4-15.4 58.6-28.3 18.2-12.9 33.1-28.2 44.8-45.7 4.3 6.6 8.1 11.5 11.5 14.7l8.7 8.9c5.8 5.9 14.7 14.6 26.7 26.1 11.9 11.5 24.1 22.7 36.3 33.7l104.4-99.9-6-4.9c-4.3-3.3-9.4-8-15.2-14.3-5.8-6.2-11.6-13.1-17.2-20.5-5.7-7.4-10.6-16.1-14.7-25.9-4.1-9.8-6.2-19.3-6.2-28.5V258.7c0-10.1-1.9-21-5.7-32.8-3.9-11.7-10.7-24.5-20.7-38.3-10-13.8-22.4-26.2-37.2-37-14.9-10.8-34.7-20-59.6-27.4-24.8-7.4-52.6-11.1-83.2-11.1-31.3 0-60.4 3.7-87.6 10.9-27.1 7.3-50.3 17-69.7 29.2-19.3 12.2-35.9 26.3-49.7 42.4-13.8 16.1-24.1 32.9-30.8 50.4-6.7 17.5-10.1 35.2-10.1 53.1L408 310c5.5-16.4 12.9-30.6 22-42.8 9.2-12.2 17.9-21 25.8-26.5 8-5.5 16.6-9.9 25.7-13.2 9.2-3.3 15.4-5 18.6-5.4 3.2-.3 5.7-.4 7.6-.4 26.7 0 45.2 7.9 55.6 23.6 6.5 9.5 9.7 23.9 9.7 43.3v56.6c-15.2.6-30.4 1.6-45.6 2.9zM573.1 500c0 16.6-2.2 31.7-6.5 45-9.2 29.1-26.7 47.4-52.4 54.8-22.4 6.6-43.7 3.3-63.9-9.8-21.5-14-32.2-33.8-32.2-59.3 0-19.9 5-36.9 15-51.1 10-14.1 23.3-24.7 40-31.7s33-12 49-14.9c15.9-3 33-4.8 51-5.4V500zm335.2 218.9c-4.3-5.4-15.9-8.9-34.9-10.7-19-1.8-35.5-1.7-49.7.4-15.3 1.8-31.1 6.2-47.3 13.4-16.3 7.1-23.4 13.1-21.6 17.8l.7 1.3.9.7 1.4.2h4.6c.8 0 1.8-.1 3.2-.2 1.4-.1 2.7-.3 3.9-.4 1.2-.1 2.9-.3 5.1-.4 2.1-.1 4.1-.4 6-.7.3 0 3.7-.3 10.3-.9 6.6-.6 11.4-1 14.3-1.3 2.9-.3 7.8-.6 14.5-.9 6.7-.3 12.1-.3 16.1 0 4 .3 8.5.7 13.6 1.1 5.1.4 9.2 1.3 12.4 2.7 3.2 1.3 5.6 3 7.1 5.1 5.2 6.6 4.2 21.2-3 43.9s-14 40.8-20.4 54.2c-2.8 5.7-2.8 9.2 0 10.7s6.7.1 11.9-4c15.6-12.2 28.6-30.6 39.1-55.3 6.1-14.6 10.5-29.8 13.1-45.7 2.4-15.9 2-26.2-1.3-31z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAntCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M378.9 738c-3.1 0-6.1-.5-8.8-1.5l4.4 30.7h26.3l-15.5-29.9c-2.1.5-4.2.7-6.4.7zm421-291.2c-12.6 0-24.8 1.5-36.5 4.2-21.4-38.4-62.3-64.3-109.3-64.3-6.9 0-13.6.6-20.2 1.6-35.4-77.4-113.4-131.1-203.9-131.1-112.3 0-205.3 82.6-221.6 190.4C127.3 455.5 64 523.8 64 607c0 88.4 71.6 160.1 160 160.2h50l13.2-27.6c-26.2-8.3-43.3-29-39.1-48.8 4.6-21.6 32.8-33.9 63.1-27.5 22.9 4.9 40.4 19.1 45.5 35.1a26.1 26.1 0 0 1 22.1-12.4h.2c-.8-3.2-1.2-6.5-1.2-9.9 0-20.1 14.8-36.7 34.1-39.6v-25.4c0-4.4 3.6-8 8-8s8 3.6 8 8v26.3c4.6 1.2 8.8 3.2 12.6 5.8l19.5-21.4c3-3.3 8-3.5 11.3-.5 3.3 3 3.5 8 .5 11.3l-20 22-.2.2a40 40 0 0 1-46.9 59.2c-.4 5.6-2.6 10.7-6 14.8l20 38.4H804v-.1c86.5-2.2 156-73 156-160.1 0-88.5-71.7-160.2-160.1-160.2zM338.2 737.2l-4.3 30h24.4l-5.9-41.5c-3.5 4.6-8.3 8.5-14.2 11.5zM797.5 305a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-65.7 61.3a24 24 0 1 0 48 0 24 24 0 1 0-48 0zM303.4 742.9l-11.6 24.3h26l3.5-24.7c-5.7.8-11.7 1-17.9.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAntDesign (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 0 0 0 76.4L474.6 944a54.14 54.14 0 0 0 76.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 0 0-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 1 0 212.6 0 106.3 106.2 0 1 0-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 0 0 0 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 0 0 0 68.6 48.7 48.7 0 0 0 68.7 0l121.8-121.7a53.93 53.93 0 0 0-.1-76.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineApartment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M908 640H804V488c0-4.4-3.6-8-8-8H548v-96h108c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h108v96H228c-4.4 0-8 3.6-8 8v152H116c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16H292v-88h440v88H620c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16zm-564 76v168H176V716h168zm84-408V140h168v168H428zm420 576H680V716h168v168z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineApi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 0 1-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineApple (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAppstoreAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683928793\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H212V212h200v200zM864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16z m-52 268H612V212h200v200zM864 544H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z m-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAppstore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAreaChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 0 0-11.3 0l-189 189.6a7.87 7.87 0 0 0-2.3 5.6V720c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineArrowDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineArrowLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 0 0 0 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineArrowRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 0 0 0-48.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineArrowUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868 545.5L536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineArrowsAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAudioMuted (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569682811064\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M682 455V311l-76 76v68c-0.1 50.7-42 92.1-94 92-19.1 0.1-36.8-5.4-52-15l-54 55c29.1 22.4 65.9 36 106 36 93.8 0 170-75.1 170-168z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M833 446h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254-63 0-120.7-23-165-61l-54 54c48.9 43.2 110.8 72.3 179 81v102H326c-13.9 0-24.9 14.3-25 32v36c0.1 4.4 2.9 8 6 8h408c3.2 0 6-3.6 6-8v-36c0-17.7-11-32-25-32H547V782c165.3-17.9 294-157.9 294-328 0-4.4-3.6-8-8-8zM846.1 68.3l-43.5-41.9c-3.1-3-8.1-3-11.2 0.1l-129 129C634.3 101.2 577 64 511 64c-93.9 0-170 75.3-170 168v224c0 6.7 0.4 13.3 1.2 19.8l-68 68c-10.5-27.9-16.3-58.2-16.2-89.8-0.2-4.4-3.8-8-8-8h-60c-4.4 0-8 3.6-8 8 0 53 12.5 103 34.6 147.4l-137 137c-3.1 3.1-3.1 8.2 0 11.3l42.7 42.7c3.1 3.1 8.2 3.1 11.3 0L846.2 79.8l0.1-0.1c3.1-3.2 3-8.3-0.2-11.4zM417 401V232c0-50.6 41.9-92 94-92 46 0 84.1 32.3 92.3 74.7L417 401z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAudio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineAudit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBaidu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M118.02 448.043c92.37-19.802 79.767-130.078 76.948-154.187-4.56-37.201-48.258-102.157-107.628-97.02C12.631 203.547 1.686 311.42 1.686 311.42-8.347 361.297 25.898 467.845 118.02 448.043m84.7 214.138c10.282 38.692 43.947 40.432 43.947 40.432h48.341V584.549h-51.74c-23.218 6.96-34.495 25.104-36.982 32.81-2.737 7.787-8.707 27.589-3.566 44.822m169.07-531.11C371.79 58.66 330.663 0 279.585 0c-50.911 0-92.205 58.66-92.205 131.072 0 72.495 41.294 131.154 92.205 131.154 51.078 0 92.205-58.659 92.205-131.154m248.092 9.107c8.872-54.93-35.075-118.892-83.333-129.828C488.208-.753 427.843 76.63 422.37 127.088c-6.551 61.725 8.789 123.283 76.865 132.066 68.158 8.865 112.022-63.879 120.646-118.976m46.35 433.02S560.762 491.672 499.237 403.6c-83.416-129.911-201.989-77.052-241.624-11.019-39.469 66.033-100.994 107.873-109.7 118.892-8.873 10.937-127.363 74.816-101.078 191.554 26.285 116.656 118.739 114.501 118.739 114.501s68.076 6.711 147.097-10.936c79.02-17.565 147.014 4.391 147.014 4.391s184.576 61.725 235.073-57.168c50.414-118.975-28.524-180.617-28.524-180.617M230.416 750.17c-51.824-10.357-72.47-45.652-75.124-51.7-2.57-6.13-17.247-34.55-9.453-82.852 22.388-72.412 86.235-77.632 86.235-77.632h63.847v-78.46l54.395.828.083 289.816zm205.388-.829c-53.565-13.753-56.052-51.782-56.052-51.782V544.946l56.052-.912v137.12c3.4 14.582 21.642 17.316 21.642 17.316h56.882V544.946h59.618V749.34zM759.64 351.617c0-26.347-21.89-105.72-103.15-105.72-81.426 0-92.289 74.899-92.289 127.841 0 50.54 4.312 121.13 105.39 118.81 101.16-2.155 90.049-114.419 90.049-140.931\",\"transform\":\"translate(132 99)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM512 196.7l271.1 197.2H240.9L512 196.7zM264 462h117v374H264V462zm189 0h117v374H453V462zm307 374H642V462h118v374z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBarChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBarcode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M120 160H72c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm833 0h-48c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zM200 736h112c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm321 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm126 0h178c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H647c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-255 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-79 64H201c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm257 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm256 0H648c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h178c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-385 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBars (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBehanceSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBehance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M634 294.3h199.5v48.4H634zM434.1 485.8c44.1-21.1 67.2-53.2 67.2-102.8 0-98.1-73-121.9-157.3-121.9H112v492.4h238.5c89.4 0 173.3-43 173.3-143 0-61.8-29.2-107.5-89.7-124.7zM220.2 345.1h101.5c39.1 0 74.2 10.9 74.2 56.3 0 41.8-27.3 58.6-66 58.6H220.2V345.1zm115.5 324.8H220.1V534.3H338c47.6 0 77.7 19.9 77.7 70.3 0 49.6-35.9 65.3-80 65.3zm575.8-89.5c0-105.5-61.7-193.4-173.3-193.4-108.5 0-182.3 81.7-182.3 188.8 0 111 69.9 187.2 182.3 187.2 85.1 0 140.2-38.3 166.7-120h-86.3c-9.4 30.5-47.6 46.5-77.3 46.5-57.4 0-87.4-33.6-87.4-90.7h256.9c.3-5.9.7-12.1.7-18.4zM653.9 537c3.1-46.9 34.4-76.2 81.2-76.2 49.2 0 73.8 28.9 78.1 76.2H653.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zM304 768V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340H304z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBgColors (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 0 0-12.8 0l-48 48a9.11 9.11 0 0 0 0 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBilibili (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M164.516 504.574c16.736-.741 32.287-1.778 47.69-2.074 66.797-1.185 132.409 6.814 194.762 31.998 30.51 12.296 59.984 26.517 86.495 46.516 21.772 16.444 26.512 36.887 16.588 67.108-6.22 18.665-18.661 32.739-34.36 45.034-37.028 28.888-75.832 54.96-120.412 69.626-31.251 10.37-63.687 18.222-96.27 23.259-42.803 6.666-86.2 9.629-129.447 13.628-8.886.89-17.92-.296-26.807-.296-4.591 0-5.776-2.37-5.924-6.37-1.185-19.703-2.074-39.553-3.851-59.256-2.222-25.48-4.74-50.96-7.702-76.292-3.999-35.406-8.442-70.663-12.885-105.92-4.592-37.184-9.331-74.22-13.774-111.403-4.443-36.294-8.442-72.736-13.182-109.03-5.332-41.48-11.256-82.96-16.884-124.439C21.888 157.63 12.705 109.04.116 61.19c-.592-2.074 1.185-6.666 2.962-7.259C44.993 37.042 87.056 20.6 128.97 3.86c13.922-5.63 15.107-7.26 15.255 10.37.148 75.107.444 150.214 1.63 225.321.592 39.11 2.073 78.218 4.739 117.18 3.258 47.552 8.294 95.106 12.589 142.659 0 2.074.889 4 1.333 5.185m83.68 218.062a74372.3 74372.3 0 0 0 114.784-86.958c-4.74-6.815-109.303-47.85-133.89-53.33 6.221 46.367 12.59 92.587 19.107 140.288M682.317 708.25C662.38 506.113 645.544 301.756 607 98.584c12.553-1.481 25.106-3.258 37.806-4.295 14.62-1.332 29.388-1.925 44.009-3.11 12.257-1.036 16.835 2.222 17.574 14.217 2.215 32.134 4.135 64.268 6.35 96.403 2.953 43.388 6.055 86.925 9.156 130.314 2.215 31.246 4.135 62.64 6.646 93.886 2.805 34.207 5.907 68.267 9.008 102.474 2.215 25.175 4.283 50.497 6.793 75.672 2.658 27.247 5.612 54.495 8.418 81.742.738 7.849 1.624 15.697 2.215 23.546.296 4.294-2.067 4.887-6.055 4.442-21.709-2.221-43.418-3.85-66.603-5.627M501 415.155c17.616-2.517 34.639-5.33 51.662-7.254 12.287-1.48 24.721-1.629 37.008-2.813 6.661-.593 10.954 1.776 11.99 8.29 2.813 17.322 5.773 34.79 7.846 52.26 3.405 29.017 6.07 58.182 9.178 87.199 2.664 25.464 5.329 50.78 8.29 76.243 3.256 27.24 6.809 54.333 10.213 81.425 1.037 7.995 1.777 16.137 2.813 24.872A9507.093 9507.093 0 0 0 565.245 745C543.929 635.15 522.612 526.189 501 415.155M883 753.976c-24.084 0-47.276.148-70.468-.296-1.933 0-5.352-3.409-5.501-5.484-3.568-37.05-6.69-73.953-9.96-111.004l-9.367-103.149c-3.27-35.42-6.393-70.841-9.663-106.262-.149-2.074-.595-4.001-1.041-7.113 8.623-1.038 16.8-2.668 25.125-2.668 22.449 0 44.897.593 67.495 1.186 5.798.148 8.325 4.001 8.623 9.336.743 11.116 1.784 22.083 1.784 33.198.148 52.167-.149 104.483.297 156.65.446 41.646 1.784 83.439 2.676 125.084zM551.069 368c-5.307-42.568-10.614-84.102-16.069-127.409 13.857-.148 27.715-.591 41.425-.591 4.57 0 6.634 2.513 7.076 7.538 3.686 38.725 7.519 77.45 11.499 117.654-14.3.739-29.042 1.773-43.931 2.808M830 252.066c11.937 0 24.619-.148 37.45 0 6.417.148 9.55 2.672 9.55 10.244-.448 36.224-.15 72.449-.15 108.525V379c-15.367-.742-30.139-1.485-46.7-2.227-.15-41.124-.15-82.396-.15-124.707M497.569 377c-7.424-41.193-14.996-82.091-22.569-124.023 13.512-2.067 27.023-4.282 40.387-5.906 5.939-.738 4.9 4.43 5.197 7.678 1.633 13.879 2.82 27.61 4.305 41.488 2.376 21.704 4.752 43.408 6.979 64.965.297 2.805 0 5.758 0 8.859-11.284 2.362-22.569 4.577-34.299 6.939M768 253.16c12.718 0 25.435.148 38.004-.148 5.685-.149 7.78 1.038 7.63 7.563-.449 17.352.15 34.704.3 52.204.15 21.505 0 43.157 0 64.513-12.868 1.335-24.09 2.373-36.209 3.708-3.142-41.97-6.433-83.793-9.725-127.84\",\"transform\":\"translate(71 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineBlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M697.8 481.4c33.6-35 54.2-82.3 54.2-134.3v-10.2C752 229.3 663.9 142 555.3 142H259.4c-15.1 0-27.4 12.3-27.4 27.4v679.1c0 16.3 13.2 29.5 29.5 29.5h318.7c117 0 211.8-94.2 211.8-210.5v-11c0-73-37.4-137.3-94.2-175.1zM328 238h224.7c57.1 0 103.3 44.4 103.3 99.3v9.5c0 54.8-46.3 99.3-103.3 99.3H328V238zm366.6 429.4c0 62.9-51.7 113.9-115.5 113.9H328V542.7h251.1c63.8 0 115.5 51 115.5 113.9v10.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderHorizontal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M540 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderInner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 476H548V144h-72v332H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v332h72V548h324c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-426h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 260h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M208 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM540 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderOuter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 548h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm364 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-182 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 182h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderVerticle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 476H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM152 382h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 642h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBorderlessTable (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683537953\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M117 368h231v64H117zM676 368h241v64H676zM412 368h200v64H412zM412 592h200v64H412zM676 592h241v64H676zM117 592h231v64H117zM412 432V179h-64v666h64V592zM676 368V179h-64v666h64V432z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBoxPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM296 368h88v288h-88V368zm432 288H448V368h280v288z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBranches (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0 0 34.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm408-491a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2c41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3C317.7 752 308 716.8 308 680V412h408v268z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBuild (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineBulb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 0h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm-195.7-81l61.2-74.9c4.3-5.2.7-13.1-5.9-13.1H388c-2.3 0-4.5 1-5.9 2.9l-34 41.6-34-41.6a7.85 7.85 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.5-1 5.9-2.9l35.5-43.5 35.5 43.5c1.5 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 675zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-36 732H180V180h664v664z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm239-167.6L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCaretDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCaretLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCaretRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCaretUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCarryOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCheckSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M433.1 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineChrome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 512.3v-.3c0-229.8-186.2-416-416-416S96 282.2 96 512v.4c0 229.8 186.2 416 416 416s416-186.2 416-416v-.3.2zm-6.7-74.6l.6 3.3-.6-3.3zM676.7 638.2c53.5-82.2 52.5-189.4-11.1-263.7l162.4-8.4c20.5 44.4 32 93.8 32 145.9 0 185.2-144.6 336.6-327.1 347.4l143.8-221.2zM512 652.3c-77.5 0-140.2-62.7-140.2-140.2 0-77.7 62.7-140.2 140.2-140.2S652.2 434.5 652.2 512 589.5 652.3 512 652.3zm369.2-331.7l-3-5.7 3 5.7zM512 164c121.3 0 228.2 62.1 290.4 156.2l-263.6-13.9c-97.5-5.7-190.2 49.2-222.3 141.1L227.8 311c63.1-88.9 166.9-147 284.2-147zM102.5 585.8c26 145 127.1 264 261.6 315.1C229.6 850 128.5 731 102.5 585.8zM164 512c0-55.9 13.2-108.7 36.6-155.5l119.7 235.4c44.1 86.7 137.4 139.7 234 121.6l-74 145.1C302.9 842.5 164 693.5 164 512zm324.7 415.4c4 .2 8 .4 12 .5-4-.2-8-.3-12-.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCiCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineClear (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683368540\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M899.1 869.6l-53-305.6H864c14.4 0 26-11.6 26-26V346c0-14.4-11.6-26-26-26H618V138c0-14.4-11.6-26-26-26H432c-14.4 0-26 11.6-26 26v182H160c-14.4 0-26 11.6-26 26v192c0 14.4 11.6 26 26 26h17.9l-53 305.6c-0.3 1.5-0.4 3-0.4 4.4 0 14.4 11.6 26 26 26h723c1.5 0 3-0.1 4.4-0.4 14.2-2.4 23.7-15.9 21.2-30zM204 390h272V182h72v208h272v104H204V390z m468 440V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H416V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H202.8l45.1-260H776l45.1 260H672z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineClockCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64Zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372Zm128.013 198.826c.023.007.042.018.083.059l45.02 45.019c.04.04.05.06.058.083a.118.118 0 0 1 0 .07c-.007.022-.018.041-.059.082L557.254 512l127.861 127.862a.268.268 0 0 1 .05.06l.009.023a.118.118 0 0 1 0 .07c-.007.022-.018.041-.059.082l-45.019 45.02c-.04.04-.06.05-.083.058a.118.118 0 0 1-.07 0c-.022-.007-.041-.018-.082-.059L512 557.254 384.14 685.115c-.042.041-.06.052-.084.059a.118.118 0 0 1-.07 0c-.022-.007-.041-.018-.082-.059l-45.02-45.019c-.04-.04-.05-.06-.058-.083a.118.118 0 0 1 0-.07c.007-.022.018-.041.059-.082L466.745 512l-127.86-127.86a.268.268 0 0 1-.05-.061l-.009-.023a.118.118 0 0 1 0-.07c.007-.022.018-.041.059-.082l45.019-45.02c.04-.04.06-.05.083-.058a.118.118 0 0 1 .07 0c.022.007.041.018.082.059L512 466.745l127.862-127.86c.04-.041.06-.052.083-.059a.118.118 0 0 1 .07 0Z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloseSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112c17.7 0 32 14.3 32 32v736c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32Zm-40 72H184v656h656V184ZM640.013 338.826c.023.007.042.018.083.059l45.02 45.019c.04.04.05.06.058.083a.118.118 0 0 1 0 .07c-.007.022-.018.041-.059.082L557.254 512l127.861 127.862a.268.268 0 0 1 .05.06l.009.023a.118.118 0 0 1 0 .07c-.007.022-.018.041-.059.082l-45.019 45.02c-.04.04-.06.05-.083.058a.118.118 0 0 1-.07 0c-.022-.007-.041-.018-.082-.059L512 557.254 384.14 685.115c-.042.041-.06.052-.084.059a.118.118 0 0 1-.07 0c-.022-.007-.041-.018-.082-.059l-45.02-45.019c-.04-.04-.05-.06-.058-.083a.118.118 0 0 1 0-.07c.007-.022.018-.041.059-.082L466.745 512l-127.86-127.86a.268.268 0 0 1-.05-.061l-.009-.023a.118.118 0 0 1 0-.07c.007-.022.018-.041.059-.082l45.019-45.02c.04-.04.06-.05.083-.058a.118.118 0 0 1 .07 0c.022.007.041.018.082.059L512 466.745l127.862-127.86c.04-.041.06-.052.083-.059a.118.118 0 0 1 .07 0Z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineClose (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M799.855 166.312c.023.007.043.018.084.059l57.69 57.69c.041.041.052.06.059.084a.118.118 0 0 1 0 .069c-.007.023-.018.042-.059.083L569.926 512l287.703 287.703c.041.04.052.06.059.083a.118.118 0 0 1 0 .07c-.007.022-.018.042-.059.083l-57.69 57.69c-.041.041-.06.052-.084.059a.118.118 0 0 1-.069 0c-.023-.007-.042-.018-.083-.059L512 569.926 224.297 857.629c-.04.041-.06.052-.083.059a.118.118 0 0 1-.07 0c-.022-.007-.042-.018-.083-.059l-57.69-57.69c-.041-.041-.052-.06-.059-.084a.118.118 0 0 1 0-.069c.007-.023.018-.042.059-.083L454.073 512 166.371 224.297c-.041-.04-.052-.06-.059-.083a.118.118 0 0 1 0-.07c.007-.022.018-.042.059-.083l57.69-57.69c.041-.041.06-.052.084-.059a.118.118 0 0 1 .069 0c.023.007.042.018.083.059L512 454.073l287.703-287.702c.04-.041.06-.052.083-.059a.118.118 0 0 1 .07 0Z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloudDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloudServer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M424 748a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm0-178a32 32 0 1 0 64 0 32 32 0 1 0-64 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloudSync (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M376.9 656.4c1.8-33.5 15.7-64.7 39.5-88.6 25.4-25.5 60-39.8 96-39.8 36.2 0 70.3 14.1 96 39.8 1.4 1.4 2.7 2.8 4.1 4.3l-25 19.6a8 8 0 0 0 3 14.1l98.2 24c5 1.2 9.9-2.6 9.9-7.7l.5-101.3c0-6.7-7.6-10.5-12.9-6.3L663 532.7c-36.6-42-90.4-68.6-150.5-68.6-107.4 0-195 85.1-199.4 191.7-.2 4.5 3.4 8.3 8 8.3H369c4.2-.1 7.7-3.4 7.9-7.7zM703 664h-47.9c-4.2 0-7.7 3.3-8 7.6-1.8 33.5-15.7 64.7-39.5 88.6-25.4 25.5-60 39.8-96 39.8-36.2 0-70.3-14.1-96-39.8-1.4-1.4-2.7-2.8-4.1-4.3l25-19.6a8 8 0 0 0-3-14.1l-98.2-24c-5-1.2-9.9 2.6-9.9 7.7l-.4 101.4c0 6.7 7.6 10.5 12.9 6.3l23.2-18.2c36.6 42 90.4 68.6 150.5 68.6 107.4 0 195-85.1 199.4-191.7.2-4.5-3.4-8.3-8-8.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloudUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M518.3 459a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCluster (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 680h-54V540H546v-92h238c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h238v92H190v140h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8zM256 805.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zm288 0c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM288 384V216h448v168H288zm544 421.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM360 300a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCodeSandbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M709.6 210l.4-.2h.2L512 96 313.9 209.8h-.2l.7.3L151.5 304v416L512 928l360.5-208V304l-162.9-94zM482.7 843.6L339.6 761V621.4L210 547.8V372.9l272.7 157.3v313.4zM238.2 321.5l134.7-77.8 138.9 79.7 139.1-79.9 135.2 78-273.9 158-274-158zM814 548.3l-128.8 73.1v139.1l-143.9 83V530.4L814 373.1v175.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCodepenCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCodepen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M911.7 385.3l-.3-1.5c-.2-1-.3-1.9-.6-2.9-.2-.6-.4-1.1-.5-1.7-.3-.8-.5-1.7-.9-2.5-.2-.6-.5-1.1-.8-1.7-.4-.8-.8-1.5-1.2-2.3-.3-.5-.6-1.1-1-1.6-.8-1.2-1.7-2.4-2.6-3.6-.5-.6-1.1-1.3-1.7-1.9-.4-.5-.9-.9-1.4-1.3-.6-.6-1.3-1.1-1.9-1.6-.5-.4-1-.8-1.6-1.2-.2-.1-.4-.3-.6-.4L531.1 117.8a34.3 34.3 0 0 0-38.1 0L127.3 361.3c-.2.1-.4.3-.6.4-.5.4-1 .8-1.6 1.2-.7.5-1.3 1.1-1.9 1.6-.5.4-.9.9-1.4 1.3-.6.6-1.2 1.2-1.7 1.9-1 1.1-1.8 2.3-2.6 3.6-.3.5-.7 1-1 1.6-.4.7-.8 1.5-1.2 2.3-.3.5-.5 1.1-.8 1.7-.3.8-.6 1.7-.9 2.5-.2.6-.4 1.1-.5 1.7-.2.9-.4 1.9-.6 2.9l-.3 1.5c-.2 1.5-.3 3-.3 4.5v243.5c0 1.5.1 3 .3 4.5l.3 1.5.6 2.9c.2.6.3 1.1.5 1.7.3.9.6 1.7.9 2.5.2.6.5 1.1.8 1.7.4.8.7 1.5 1.2 2.3.3.5.6 1.1 1 1.6.5.7.9 1.4 1.5 2.1l1.2 1.5c.5.6 1.1 1.3 1.7 1.9.4.5.9.9 1.4 1.3.6.6 1.3 1.1 1.9 1.6.5.4 1 .8 1.6 1.2.2.1.4.3.6.4L493 905.7c5.6 3.8 12.3 5.8 19.1 5.8 6.6 0 13.3-1.9 19.1-5.8l365.6-243.5c.2-.1.4-.3.6-.4.5-.4 1-.8 1.6-1.2.7-.5 1.3-1.1 1.9-1.6.5-.4.9-.9 1.4-1.3.6-.6 1.2-1.2 1.7-1.9l1.2-1.5 1.5-2.1c.3-.5.7-1 1-1.6.4-.8.8-1.5 1.2-2.3.3-.5.5-1.1.8-1.7.3-.8.6-1.7.9-2.5.2-.5.4-1.1.5-1.7.3-.9.4-1.9.6-2.9l.3-1.5c.2-1.5.3-3 .3-4.5V389.8c-.3-1.5-.4-3-.6-4.5zM546.4 210.5l269.4 179.4-120.3 80.4-149-99.6V210.5zm-68.8 0v160.2l-149 99.6-120.3-80.4 269.3-179.4zM180.7 454.1l86 57.5-86 57.5v-115zm296.9 358.5L208.3 633.2l120.3-80.4 149 99.6v160.2zM512 592.8l-121.6-81.2L512 430.3l121.6 81.2L512 592.8zm34.4 219.8V652.4l149-99.6 120.3 80.4-269.3 179.4zM843.3 569l-86-57.5 86-57.5v115z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCoffee (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M275 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm613 144H768c0-39.8-32.2-72-72-72H200c-39.8 0-72 32.2-72 72v248c0 3.4.2 6.7.7 9.9-.5 7-.7 14-.7 21.1 0 176.7 143.3 320 320 320 160.1 0 292.7-117.5 316.3-271H888c39.8 0 72-32.2 72-72V497c0-39.8-32.2-72-72-72zM696 681h-1.1c.7 7.6 1.1 15.2 1.1 23 0 137-111 248-248 248S200 841 200 704c0-7.8.4-15.4 1.1-23H200V425h496v256zm192-8H776V497h112v176zM613 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm-170 0c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineColumnHeight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineColumnWidth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineComment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569682881658\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M573 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40zM293 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M894 345c-48.1-66-115.3-110.1-189-130v0.1c-17.1-19-36.4-36.5-58-52.1-163.7-119-393.5-82.7-513 81-96.3 133-92.2 311.9 6 439l0.8 132.6c0 3.2 0.5 6.4 1.5 9.4 5.3 16.9 23.3 26.2 40.1 20.9L309 806c33.5 11.9 68.1 18.7 102.5 20.6l-0.5 0.4c89.1 64.9 205.9 84.4 313 49l127.1 41.4c3.2 1 6.5 1.6 9.9 1.6 17.7 0 32-14.3 32-32V753c88.1-119.6 90.4-284.9 1-408zM323 735l-12-5-99 31-1-104-8-9c-84.6-103.2-90.2-251.9-11-361 96.4-132.2 281.2-161.4 413-66 132.2 96.1 161.5 280.6 66 412-80.1 109.9-223.5 150.5-348 102z m505-17l-8 10 1 104-98-33-12 5c-56 20.8-115.7 22.5-171 7l-0.2-0.1C613.7 788.2 680.7 742.2 729 676c76.4-105.3 88.8-237.6 44.4-350.4l0.6 0.4c23 16.5 44.1 37.1 62 62 72.6 99.6 68.5 235.2-8 330z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M433 421c-23.1 0-41 17.9-41 40s17.9 40 41 40c21.1 0 39-17.9 39-40s-17.9-40-39-40z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCompass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm198.4-588.1a32 32 0 0 0-24.5.5L414.9 415 296.4 686c-3.6 8.2-3.6 17.5 0 25.7 3.4 7.8 9.7 13.9 17.7 17 3.8 1.5 7.7 2.2 11.7 2.2 4.4 0 8.7-.9 12.8-2.7l271-118.6 118.5-271a32.06 32.06 0 0 0-17.7-42.7zM576.8 534.4l26.2 26.2-42.4 42.4-26.2-26.2L380 644.4 447.5 490 422 464.4l42.4-42.4 25.5 25.5L644.4 380l-67.6 154.4zM464.4 422L422 464.4l25.5 25.6 86.9 86.8 26.2 26.2 42.4-42.4-26.2-26.2-86.8-86.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCompress (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683667781\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M326 664H104c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h174v176c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V696c0-17.7-14.3-32-32-32zM342 88h-48c-8.8 0-16 7.2-16 16v176H104c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h222c17.7 0 32-14.3 32-32V104c0-8.8-7.2-16-16-16zM920 664H698c-17.7 0-32 14.3-32 32v224c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V744h174c8.8 0 16-7.2 16-16v-48c0-8.8-7.2-16-16-16zM920 280H746V104c0-8.8-7.2-16-16-16h-48c-8.8 0-16 7.2-16 16v224c0 17.7 14.3 32 32 32h222c8.8 0 16-7.2 16-16v-48c0-8.8-7.2-16-16-16z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineConsoleSql (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683650778\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M301.3 496.7c-23.8 0-40.2-10.5-41.6-26.9H205c0.9 43.4 36.9 70.3 93.9 70.3 59.1 0 95-28.4 95-75.5 0-35.8-20-55.9-64.5-64.5l-29.1-5.6c-23.8-4.7-33.8-11.9-33.8-24.2 0-15 13.3-24.5 33.4-24.5 20.1 0 35.3 11.1 36.6 27h53c-0.9-41.7-37.5-70.3-90.3-70.3-54.4 0-89.7 28.9-89.7 73 0 35.5 21.2 58 62.5 65.8l29.7 5.9c25.8 5.2 35.6 11.9 35.6 24.4 0.1 14.7-14.5 25.1-36 25.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32z m-40 488H136V212h752v416z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M828.5 486.7h-95.8V308.5h-57.4V534h153.2zM529.9 540.1c14.1 0 27.2-2 39.1-5.8l13.3 20.3h53.3L607.9 511c21.1-20 33-51.1 33-89.8 0-73.3-43.3-118.8-110.9-118.8s-111.2 45.3-111.2 118.8c-0.1 73.7 43 118.9 111.1 118.9z m0-190c31.6 0 52.7 27.7 52.7 71.1 0 16.7-3.6 30.6-10 40.5l-5.2-6.9h-48.8L542 491c-3.9 0.9-8 1.4-12.2 1.4-31.7 0-52.8-27.5-52.8-71.2 0.1-43.6 21.2-71.1 52.9-71.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zm416-354H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineContainer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineControl (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8s0 .1.1.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8 0 0 0 .1-.1.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7zM620 539v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8v.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8v.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCopyrightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zm-126 534.1H250.3l-53.8-409.4 139.8 86.1L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4zM512 509c-62.1 0-112.6 50.5-112.6 112.6S449.9 734.2 512 734.2s112.6-50.5 112.6-112.6S574.1 509 512 509zm0 160.9c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineCustomerService (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M112 476h160v72H112zm320 0h160v72H432zm320 0h160v72H752z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDashboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM304 240a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDeleteColumn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683386799\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M651.1 641.9c-1.4-1.2-3.2-1.9-5.1-1.9h-54.7c-2.4 0-4.6 1.1-6.1 2.9L512 730.7l-73.1-87.8c-1.5-1.8-3.8-2.9-6.1-2.9H378c-1.9 0-3.7 0.7-5.1 1.9-3.4 2.8-3.9 7.9-1 11.3L474.2 776 371.8 898.9c-2.8 3.4-2.4 8.4 1 11.3 1.4 1.2 3.2 1.9 5.1 1.9h54.7c2.4 0 4.6-1.1 6.1-2.9l73.1-87.8 73.1 87.8c1.5 1.8 3.8 2.9 6.1 2.9h55c1.9 0 3.7-0.7 5.1-1.9 3.4-2.8 3.9-7.9 1-11.3L549.8 776l102.4-122.9c2.8-3.4 2.3-8.4-1.1-11.2zM472 544h80c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8zM350 386H184V136c0-3.3-2.7-6-6-6h-60c-3.3 0-6 2.7-6 6v292c0 16.6 13.4 30 30 30h208c3.3 0 6-2.7 6-6v-60c0-3.3-2.7-6-6-6zM906 130h-60c-3.3 0-6 2.7-6 6v250H674c-3.3 0-6 2.7-6 6v60c0 3.3 2.7 6 6 6h208c16.6 0 30-13.4 30-30V136c0-3.3-2.7-6-6-6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDeleteRow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683582196\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M819.8 512l102.4-122.9c2.8-3.4 2.4-8.4-1-11.3-1.4-1.2-3.2-1.9-5.1-1.9h-54.7c-2.4 0-4.6 1.1-6.1 2.9L782 466.7l-73.1-87.8c-1.5-1.8-3.8-2.9-6.1-2.9H648c-1.9 0-3.7 0.7-5.1 1.9-3.4 2.8-3.9 7.9-1 11.3L744.2 512 641.8 634.9c-2.8 3.4-2.4 8.4 1 11.3 1.4 1.2 3.2 1.9 5.1 1.9h54.7c2.4 0 4.6-1.1 6.1-2.9l73.1-87.8 73.1 87.8c1.5 1.8 3.8 2.9 6.1 2.9h55c1.9 0 3.7-0.7 5.1-1.9 3.4-2.8 3.9-7.9 1-11.3L819.8 512zM536 464H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h416c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zM452 668h-60c-3.3 0-6 2.7-6 6v166H136c-3.3 0-6 2.7-6 6v60c0 3.3 2.7 6 6 6h292c16.6 0 30-13.4 30-30V674c0-3.3-2.7-6-6-6zM136 184h250v166c0 3.3 2.7 6 6 6h60c3.3 0 6-2.7 6-6V142c0-16.6-13.4-30-30-30H136c-3.3 0-6 2.7-6 6v60c0 3.3 2.7 6 6 6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDeliveredProcedure (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683642448\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M632 698.3l141.9-112c4.1-3.2 4.1-9.4 0-12.6L632 461.7c-5.3-4.2-13-0.4-13 6.3v76H295c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v76c0 6.7 7.8 10.4 13 6.3zM893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v278c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V422c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-83.5c0-17-6.7-33.2-18.7-45.2zM640 288H384V184h256v104zM904 724h-56c-4.4 0-8 3.6-8 8v108H184V732c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v148c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V732c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDeploymentUnit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888.3 693.2c-42.5-24.6-94.3-18-129.2 12.8l-53-30.7V523.6c0-15.7-8.4-30.3-22-38.1l-136-78.3v-67.1c44.2-15 76-56.8 76-106.1 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 49.3 31.8 91.1 76 106.1v67.1l-136 78.3c-13.6 7.8-22 22.4-22 38.1v151.6l-53 30.7c-34.9-30.8-86.8-37.4-129.2-12.8-53.5 31-71.7 99.4-41 152.9 30.8 53.5 98.9 71.9 152.2 41 42.5-24.6 62.7-73 53.6-118.8l48.7-28.3 140.6 81c6.8 3.9 14.4 5.9 22 5.9s15.2-2 22-5.9L674.5 740l48.7 28.3c-9.1 45.7 11.2 94.2 53.6 118.8 53.3 30.9 121.5 12.6 152.2-41 30.8-53.6 12.6-122-40.7-152.9zm-673 138.4a47.6 47.6 0 0 1-65.2-17.6c-13.2-22.9-5.4-52.3 17.5-65.5a47.6 47.6 0 0 1 65.2 17.6c13.2 22.9 5.4 52.3-17.5 65.5zM522 463.8zM464 234a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm170 446.2l-122 70.3-122-70.3V539.8l122-70.3 122 70.3v140.4zm239.9 133.9c-13.2 22.9-42.4 30.8-65.2 17.6-22.8-13.2-30.7-42.6-17.5-65.5s42.4-30.8 65.2-17.6c22.9 13.2 30.7 42.5 17.5 65.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDesktop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDiff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7zm-7.1-502.6c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888zm190.2-581.4L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDingding (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDingtalk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDisconnect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832.6 191.4c-84.6-84.6-221.5-84.6-306 0l-96.9 96.9 51 51 96.9-96.9c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204l-96.9 96.9 51.1 51.1 96.9-96.9c84.4-84.6 84.4-221.5-.1-306.1zM446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l96.9-96.9-51.1-51.1-96.9 96.9c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l96.9-96.9-51-51-96.8 97zM260.3 209.4a8.03 8.03 0 0 0-11.3 0L209.4 249a8.03 8.03 0 0 0 0 11.3l554.4 554.4c3.1 3.1 8.2 3.1 11.3 0l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3L260.3 209.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDiscord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M340.992 0 316 3.008S203.872 15.264 121.984 81.024h-.96l-1.024.96c-18.368 16.896-26.368 37.664-39.008 68.032a982.08 982.08 0 0 0-37.984 112C19.264 347.872 0 451.872 0 547.008v8l4 8c29.632 52 82.24 85.12 131.008 108 48.736 22.88 90.88 35.008 120 36l19.008.992L284 691.008l35.008-62.016c37.12 8.384 79.872 14.016 128.992 14.016 49.12 0 91.872-5.632 128.992-14.016L612 691.008 622.016 708l18.976-.992c29.12-.992 71.264-13.12 120-36 48.768-22.88 101.376-56 131.008-108l4-8v-8c0-95.136-19.264-199.136-43.008-284.992a982.08 982.08 0 0 0-37.984-112c-12.64-30.4-20.64-51.136-39.008-68l-.992-1.024h-1.024C692.16 15.264 580 3.008 580 3.008L555.008 0l-9.024 23.008s-9.248 23.36-14.976 50.016A643.04 643.04 0 0 0 448 67.008c-17.12 0-46.72 1.12-83.008 6.016-5.76-26.656-15.008-50.016-15.008-50.016zm-44 73.024c1.376 4.48 2.752 8.352 4 12-41.376 10.24-85.504 25.856-125.984 50.976l33.984 54.016C292 138.496 411.232 131.008 448 131.008c36.736 0 156 7.488 239.008 59.008L720.992 136c-40.48-25.12-84.608-40.736-125.984-51.008 1.248-3.616 2.624-7.488 4-12 29.856 6.016 86.88 19.776 133.984 57.024-.256.128 12 18.624 23.008 44.992 11.264 27.136 23.744 63.264 35.008 104 21.632 78.112 38.624 173.248 40 256.992-20.16 30.752-57.504 58.496-97.024 77.024A311.808 311.808 0 0 1 656 637.984l-16-26.976c9.504-3.52 18.88-7.36 27.008-11.008 49.248-21.632 76-44.992 76-44.992l-42.016-48s-17.984 16.512-60 35.008C599.04 560.512 534.88 579.008 448 579.008s-151.008-18.496-192.992-36.992c-42.016-18.496-60-35.008-60-35.008l-42.016 48s26.752 23.36 76 44.992A424.473 424.473 0 0 0 256 611.008l-16 27.008a311.808 311.808 0 0 1-78.016-25.024c-39.488-18.496-76.864-46.24-96.96-76.992 1.344-83.744 18.336-178.88 40-256.992a917.216 917.216 0 0 1 34.976-104c11.008-26.368 23.264-44.864 23.008-44.992 47.104-37.248 104.128-51.008 133.984-56.992M336 291.008c-24.736 0-46.624 14.112-60 32-13.376 17.888-20 39.872-20 64s6.624 46.112 20 64c13.376 17.888 35.264 32 60 32 24.736 0 46.624-14.112 60-32 13.376-17.888 20-39.872 20-64s-6.624-46.112-20-64c-13.376-17.888-35.264-32-60-32m224 0c-24.736 0-46.624 14.112-60 32-13.376 17.888-20 39.872-20 64s6.624 46.112 20 64c13.376 17.888 35.264 32 60 32 24.736 0 46.624-14.112 60-32 13.376-17.888 20-39.872 20-64s-6.624-46.112-20-64c-13.376-17.888-35.264-32-60-32m-224 64c1.76 0 4 .64 8 6.016 4 5.344 8 14.72 8 25.984 0 11.264-4 20.64-8 26.016-4 5.344-6.24 5.984-8 5.984-1.76 0-4-.64-8-6.016a44.832 44.832 0 0 1-8-25.984c0-11.264 4-20.64 8-26.016 4-5.344 6.24-5.984 8-5.984m224 0c1.76 0 4 .64 8 6.016 4 5.344 8 14.72 8 25.984 0 11.264-4 20.64-8 26.016-4 5.344-6.24 5.984-8 5.984-1.76 0-4-.64-8-6.016a44.832 44.832 0 0 1-8-25.984c0-11.264 4-20.64 8-26.016 4-5.344 6.24-5.984 8-5.984\",\"transform\":\"translate(64 158)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDocker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M491.877 286.236h-92.612v-82.784h92.612zm0-286.236h-92.612v85.59h92.612zm109.45 203.452h-92.612v82.784h92.612zm-218.9-101.024h-92.612v84.187h92.612zm109.45 0h-92.612v84.187h92.612zm388.688 140.311c-19.645-14.03-67.354-18.24-102.434-11.225-4.21-33.674-23.855-63.14-57.532-89.8l-19.645-12.627-12.628 19.644c-25.258 39.287-32.274 103.83-5.613 145.924-12.63 7.015-36.484 15.434-67.354 15.434H3.56c-12.629 71.56 8.42 164.165 61.741 227.305C117.221 599.131 195.8 630 296.832 630c220.302 0 384.478-101.024 460.25-286.236 29.468 0 95.419 0 127.692-63.14 1.404-2.807 9.823-18.24 11.226-23.853zm-717.038-39.287H70.915v82.784h92.612zm109.45 0h-92.612v82.784h92.612zm109.45 0h-92.612v82.784h92.612zm-109.45-101.024h-92.612v84.187h92.612z\",\"transform\":\"translate(64 202)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDollarCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDollar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDotChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm118-224a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm158 228a96 96 0 1 0 192 0 96 96 0 1 0-192 0zm148-314a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDotNet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fillOpacity\":\".88\",\"transform\":\"translate(64 362)\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M37.283 300c-10.652 0-19.53-3.297-26.63-9.89C3.55 283.514 0 275.41 0 265.793c0-9.891 3.653-17.996 10.96-24.315 7.306-6.32 16.422-9.479 27.347-9.479 11.062 0 20.11 3.194 27.143 9.582C72.483 247.97 76 256.04 76 265.794c0 10.028-3.585 18.236-10.755 24.624-7.17 6.388-16.49 9.582-27.962 9.582M394 295h-66.969L205.624 109.648c-7.121-10.835-12.052-18.995-14.79-24.48h-.822c1.095 10.422 1.643 26.331 1.643 47.726V295H129V0h71.488l116.888 179.592c5.341 8.092 10.271 16.115 14.79 24.07h.822c-1.095-6.858-1.643-20.367-1.643-40.527V0H394z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M638 295 461 295 461 0 631.20814 0 631.20814 54.1039052 527.477907 54.1039052 527.477907 119.728033 624.004651 119.728033 624.004651 173.62622 527.477907 173.62622 527.477907 241.101813 638 241.101813z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M896 54.1039052 812.047368 54.1039052 812.047368 295 745.542105 295 745.542105 54.1039052 662 54.1039052 662 0 896 0z\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineDoubleLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDoubleRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 0 0 188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 0 0 492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.8-5.3 0-12.7-6.5-12.7H643c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDrag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M909.3 506.3L781.7 405.6a7.23 7.23 0 0 0-11.7 5.7V476H548V254h64.8c6 0 9.4-7 5.7-11.7L517.7 114.7a7.14 7.14 0 0 0-11.3 0L405.6 242.3a7.23 7.23 0 0 0 5.7 11.7H476v222H254v-64.8c0-6-7-9.4-11.7-5.7L114.7 506.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h222v222h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V548h222v64.8c0 6 7 9.4 11.7 5.7l127.5-100.8a7.3 7.3 0 0 0 .1-11.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDribbbleSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDribbble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 96C282.6 96 96 282.6 96 512s186.6 416 416 416 416-186.6 416-416S741.4 96 512 96zm275.1 191.8c49.5 60.5 79.5 137.5 80.2 221.4-11.7-2.5-129.2-26.3-247.4-11.4-2.5-6.1-5-12.2-7.6-18.3-7.4-17.3-15.3-34.6-23.6-51.5C720 374.3 779.6 298 787.1 287.8zM512 157.2c90.3 0 172.8 33.9 235.5 89.5-6.4 9.1-59.9 81-186.2 128.4-58.2-107-122.7-194.8-132.6-208 27.3-6.6 55.2-9.9 83.3-9.9zM360.9 191c9.4 12.8 72.9 100.9 131.7 205.5C326.4 440.6 180 440 164.1 439.8c23.1-110.3 97.4-201.9 196.8-248.8zM156.7 512.5c0-3.6.1-7.3.2-10.9 15.5.3 187.7 2.5 365.2-50.6 10.2 19.9 19.9 40.1 28.8 60.3-4.7 1.3-9.4 2.7-14 4.2C353.6 574.9 256.1 736.4 248 750.1c-56.7-63-91.3-146.3-91.3-237.6zM512 867.8c-82.2 0-157.9-28-218.1-75 6.4-13.1 78.3-152 278.7-221.9l2.3-.8c49.9 129.6 70.5 238.3 75.8 269.5A350.46 350.46 0 0 1 512 867.8zm198.5-60.7c-3.6-21.6-22.5-125.6-69-253.3C752.9 536 850.7 565.2 862.8 569c-15.8 98.8-72.5 184.2-152.3 238.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineDropbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M64 556.9l264.2 173.5L512.5 577 246.8 412.7zm896-290.3zm0 0L696.8 95 512.5 248.5l265.2 164.2L512.5 577l184.3 153.4L960 558.8 777.7 412.7zM513 609.8L328.2 763.3l-79.4-51.5v57.8L513 928l263.7-158.4v-57.8l-78.9 51.5zM328.2 95L64 265.1l182.8 147.6 265.7-164.2zM64 556.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEllipsis (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEnter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEnvironment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEuroCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEuro (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineException (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM640 812a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm12-64h40c4.4 0 8-3.6 8-8V628c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExclamationCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448 804a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm32-168h64c4.4 0 8-3.6 8-8V164c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExpandAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExpand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683683230\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M342 88H120c-17.7 0-32 14.3-32 32v224c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V168h174c8.8 0 16-7.2 16-16v-48c0-8.8-7.2-16-16-16zM920 664h-48c-8.8 0-16 7.2-16 16v176H682c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h222c17.7 0 32-14.3 32-32V680c0-8.8-7.2-16-16-16zM342 856H168V680c0-8.8-7.2-16-16-16h-48c-8.8 0-16 7.2-16 16v224c0 17.7 14.3 32 32 32h222c8.8 0 16-7.2 16-16v-48c0-8.8-7.2-16-16-16zM904 88H682c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h174v176c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V120c0-17.7-14.3-32-32-32z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExperiment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 472a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm367 352.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.7-107.8c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1L813.5 844h-603z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineExport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32ZM770.87 824.869l-52.2 52.2c-4.7 4.7-1.9 12.8 4.7 13.6l179.4 21c5.1.6 9.5-3.7 8.9-8.9l-21-179.4c-.8-6.6-8.9-9.4-13.6-4.7l-52.4 52.4-256.2-256.2c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.4c-3.1 3.1-3.1 8.2 0 11.3l256.1 256.3Z\",\"transform\":\"matrix(1 0 0 -1 0 1024)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEyeInvisible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zm-63.57-320.64L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineEye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFacebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M925.9 804l-24-199.2c-.8-6.6-8.9-9.4-13.6-4.7L829 659.5 557.7 388.3c-6.3-6.2-16.4-6.2-22.6 0L433.3 490 156.6 213.3a8.03 8.03 0 0 0-11.3 0l-45 45.2a8.03 8.03 0 0 0 0 11.3L422 591.7c6.2 6.3 16.4 6.3 22.6 0L546.4 490l226.1 226-59.3 59.3a8.01 8.01 0 0 0 4.7 13.6l199.2 24c5.1.7 9.5-3.7 8.8-8.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFastBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFastForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFieldBinary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683645783\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M600 395.4h91V649h79V267c0-4.4-3.6-8-8-8h-48.2c-3.7 0-7 2.6-7.7 6.3-2.6 12.1-6.9 22.3-12.9 30.9-7.2 10.1-15.9 18.2-26.3 24.4-10.3 6.2-22 10.5-35 12.9-10.4 1.9-21 3-32 3.1-4.4 0.1-7.9 3.6-7.9 8v42.8c0 4.4 3.6 8 8 8zM871 702H567c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM443.9 312.7c-16.1-19-34.4-32.4-55.2-40.4-21.3-8.2-44.1-12.3-68.4-12.3-23.9 0-46.4 4.1-67.7 12.3-20.8 8-39 21.4-54.8 40.3-15.9 19.1-28.7 44.7-38.3 77-9.6 32.5-14.5 73-14.5 121.5 0 49.9 4.9 91.4 14.5 124.4 9.6 32.8 22.4 58.7 38.3 77.7 15.8 18.9 34 32.3 54.8 40.3 21.3 8.2 43.8 12.3 67.7 12.3 24.4 0 47.2-4.1 68.4-12.3 20.8-8 39.2-21.4 55.2-40.4 16.1-19 29-44.9 38.6-77.7 9.6-33 14.5-74.5 14.5-124.4 0-48.4-4.9-88.9-14.5-121.5-9.5-32.1-22.4-57.7-38.6-76.8z m-29.5 251.7c-1 21.4-4.2 42-9.5 61.9-5.5 20.7-14.5 38.5-27 53.4-13.6 16.3-33.2 24.3-57.6 24.3-24 0-43.2-8.1-56.7-24.4-12.2-14.8-21.1-32.6-26.6-53.3-5.3-19.9-8.5-40.6-9.5-61.9-1-20.8-1.5-38.5-1.5-53.2 0-8.8 0.1-19.4 0.4-31.8 0.2-12.7 1.1-25.8 2.6-39.2 1.5-13.6 4-27.1 7.6-40.5 3.7-13.8 8.8-26.3 15.4-37.4 6.9-11.6 15.8-21.1 26.7-28.3 11.4-7.6 25.3-11.3 41.5-11.3 16.1 0 30.1 3.7 41.7 11.2 11.1 7.2 20.3 16.6 27.4 28.2 6.9 11.2 12.1 23.8 15.6 37.7 3.3 13.2 5.8 26.6 7.5 40.1 1.8 13.5 2.8 26.6 3 39.4 0.2 12.4 0.4 23 0.4 31.8 0.1 14.8-0.4 32.5-1.4 53.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFieldNumber (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683604581\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M508 280h-63.3c-3.3 0-6 2.7-6 6v340.2H433L197.4 282.6c-1.1-1.6-3-2.6-4.9-2.6H126c-3.3 0-6 2.7-6 6v464c0 3.3 2.7 6 6 6h62.7c3.3 0 6-2.7 6-6V405.1h5.7l238.2 348.3c1.1 1.6 3 2.6 5 2.6H508c3.3 0 6-2.7 6-6V286c0-3.3-2.7-6-6-6zM886 693H582c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM733.8 630c52.9 0 95.2-17.2 126.2-51.7 29.4-32.9 44-75.8 44-128.8 0-53.1-14.6-96.5-44-129.3-30.9-34.8-73.2-52.2-126.2-52.2-53.7 0-95.9 17.5-126.3 52.8-29.2 33.1-43.4 75.9-43.4 128.7 0 52.4 14.3 95.2 43.5 128.3 30.6 34.7 73 52.2 126.2 52.2z m-71.5-263.7c16.9-20.6 40.3-30.9 71.4-30.9 31.5 0 54.8 9.6 71 29.1 16.4 20.3 24.9 48.6 24.9 84.9 0 36.3-8.4 64.1-24.8 83.9-16.5 19.4-40 29.2-71.1 29.2-31.2 0-55-10.3-71.4-30.4-16.3-20.1-24.5-47.3-24.5-82.6 0.1-35.8 8.2-63 24.5-83.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFieldString (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683607277\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M875.6 515.9c2.1 0.8 4.4-0.3 5.2-2.4 0.2-0.4 0.2-0.9 0.2-1.4v-58.3c0-1.8-1.1-3.3-2.8-3.8-6-1.8-17.2-3-27.2-3-32.9 0-61.7 16.7-73.5 41.2v-28.6c0-4.4-3.6-8-8-8H717c-4.4 0-8 3.6-8 8V729c0 4.4 3.6 8 8 8h54.8c4.4 0 8-3.6 8-8V572.7c0-36.2 26.1-60.2 65.1-60.2 10.4 0.1 26.6 1.8 30.7 3.4zM338.6 475.4l-54.7-12.6c-61.2-14.2-87.7-34.8-87.7-70.7 0-44.6 39.1-73.5 96.9-73.5 52.8 0 91.4 26.5 99.9 68.9h70C455.9 311.6 387.6 259 293.4 259c-103.3 0-171 55.5-171 139 0 68.6 38.6 109.5 122.2 128.5l61.6 14.3c63.6 14.9 91.6 37.1 91.6 75.1 0 44.1-43.5 75.2-102.5 75.2-60.6 0-104.5-27.2-112.8-70.5H111c7.2 79.9 75.6 130.4 179.1 130.4C402.3 751 471 695.2 471 605.3c0-70.2-38.6-108.5-132.4-129.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M877 729m-36 0a36 36 0 1 0 72 0 36 36 0 1 0-72 0Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M653 457.8h-51.4V396c0-4.4-3.6-8-8-8h-54.7c-4.4 0-8 3.6-8 8v61.8H495c-4.4 0-8 3.6-8 8v42.3c0 4.4 3.6 8 8 8h35.9v147.5c0 56.2 27.4 79.4 93.1 79.4 11.7 0 23.6-1.2 33.8-3.1 1.9-0.3 3.2-2 3.2-3.9v-49.3c0-2.2-1.8-4-4-4h-0.4c-4.9 0.5-6.2 0.6-8.3 0.8-4.1 0.3-7.8 0.5-12.6 0.5-24.1 0-34.1-10.3-34.1-35.6V516.1H653c4.4 0 8-3.6 8-8v-42.3c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFieldTime (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683618210\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M945 412H689c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h256c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM811 548H689c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h122c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM477.3 322.5H434c-6.2 0-11.2 5-11.2 11.2v248c0 3.6 1.7 6.9 4.6 9l148.9 108.6c5 3.6 12 2.6 15.6-2.4l25.7-35.1v-0.1c3.6-5 2.5-12-2.5-15.6l-126.7-91.6V333.7c0.1-6.2-5-11.2-11.1-11.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M804.8 673.9H747c-5.6 0-10.9 2.9-13.9 7.7-12.7 20.1-27.5 38.7-44.5 55.7-29.3 29.3-63.4 52.3-101.3 68.3-39.3 16.6-81 25-124 25-43.1 0-84.8-8.4-124-25-37.9-16-72-39-101.3-68.3s-52.3-63.4-68.3-101.3c-16.6-39.2-25-80.9-25-124 0-43.1 8.4-84.7 25-124 16-37.9 39-72 68.3-101.3 29.3-29.3 63.4-52.3 101.3-68.3 39.2-16.6 81-25 124-25 43.1 0 84.8 8.4 124 25 37.9 16 72 39 101.3 68.3 17 17 31.8 35.6 44.5 55.7 3 4.8 8.3 7.7 13.9 7.7h57.8c6.9 0 11.3-7.2 8.2-13.3-65.2-129.7-197.4-214-345-215.7-216.1-2.7-395.6 174.2-396 390.1C71.6 727.5 246.9 903 463.2 903c149.5 0 283.9-84.6 349.8-215.8 3.1-6.1-1.4-13.3-8.2-13.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileDone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 0 0-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileExcel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM472 744a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm16-104h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileGif (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683725598\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M551.5 490.5H521c-4.6 0-8.4 3.7-8.4 8.4V720c0 4.6 3.7 8.4 8.4 8.4h30.5c4.6 0 8.4-3.7 8.4-8.4V498.9c-0.1-4.6-3.8-8.4-8.4-8.4zM477.3 600h-88.1c-4.6 0-8.4 3.7-8.4 8.4v23.8c0 4.6 3.7 8.4 8.4 8.4h47.6v0.7c-0.6 29.9-23 49.8-56.5 49.8-39.2 0-63.6-30.7-63.6-81.4 0-50.1 23.9-80.6 62.3-80.6 28.1 0 47.5 13.5 55.4 38.3l0.9 2.8h49.2l-0.7-4.6C475.9 515.9 434.7 484 379 484c-68.8 0-113 49.4-113 125.9 0 77.5 43.7 126.1 113.6 126.1 64.4 0 106-40.3 106-102.9v-24.8c0-4.6-3.7-8.3-8.3-8.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216c0 23.2 18.8 42 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M608.2 727.8h32.3c4.6 0 8.4-3.7 8.4-8.4v-84.8h87.8c4.6 0 8.4-3.7 8.4-8.4v-25.5c0-4.6-3.7-8.4-8.4-8.4h-87.8v-58.9h96.8c4.6 0 8.4-3.7 8.4-8.4v-26.8c0-4.6-3.7-8.4-8.4-8.4H608.2c-4.6 0-8.4 3.7-8.4 8.4v221.1c0 4.8 3.8 8.5 8.4 8.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileJpg (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M874.6 301.8L596.8 21.3c-4.5-4.5-9.4-8.3-14.7-11.5-1.4-.8-2.8-1.6-4.3-2.3-.9-.5-1.9-.9-2.8-1.3-9-4-18.9-6.2-29-6.2H201c-39.8 0-73 32.2-73 72v880c0 39.8 33.2 72 73 72h623c39.8 0 71-32.2 71-72V352.5c0-19-7-37.2-20.4-50.7zM583 110.4L783.8 312H583V110.4zM823 952H200V72h311v240c0 39.8 33.2 72 73 72h239v568zM350 696.5c0 24.2-7.5 31.4-21.9 31.4-9 0-18.4-5.8-24.8-18.5L272.9 732c13.4 22.9 32.3 34.2 61.3 34.2 41.6 0 60.8-29.9 60.8-66.2V577h-45v119.5zM501.3 577H437v186h44v-62h21.6c39.1 0 73.1-19.6 73.1-63.6 0-45.8-33.5-60.4-74.4-60.4zm-.8 89H481v-53h18.2c21.5 0 33.4 6.2 33.4 24.9 0 18.1-10.5 28.1-32.1 28.1zm182.5-9v36h30v30.1c-4 2.9-11 4.7-17.7 4.7-34.3 0-50.7-21.4-50.7-58.2 0-36.1 19.7-57.4 47.1-57.4 15.3 0 25 6.2 34 14.4l23.7-28.3c-12.7-12.8-32.1-24.2-59.2-24.2-49.6 0-91.1 35.3-91.1 97 0 62.7 40 95.1 91.5 95.1 25.9 0 49.2-10.2 61.5-22.6V657H683z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileMarkdown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFilePdf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFilePpt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M424 476c-4.4 0-8 3.6-8 8v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.3c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1zm280-281.7L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileProtect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M644.7 669.2a7.92 7.92 0 0 0-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 0 0-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 0 0 0-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileSync (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M296 256c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm192 200v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8zm-48 396H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm104.1-115.6c1.8-34.5 16.2-66.8 40.8-91.4 26.2-26.2 62-41 99.1-41 37.4 0 72.6 14.6 99.1 41 3.2 3.2 6.3 6.6 9.2 10.1L769.2 673a8 8 0 0 0 3 14.1l93.3 22.5c5 1.2 9.8-2.6 9.9-7.7l.6-95.4a8 8 0 0 0-12.9-6.4l-20.3 15.8C805.4 569.6 748.1 540 684 540c-109.9 0-199.6 86.9-204 195.7-.2 4.5 3.5 8.3 8 8.3h48.1c4.3 0 7.8-3.3 8-7.6zM880 744h-48.1c-4.3 0-7.8 3.3-8 7.6-1.8 34.5-16.2 66.8-40.8 91.4-26.2 26.2-62 41-99.1 41-37.4 0-72.6-14.6-99.1-41-3.2-3.2-6.3-6.6-9.2-10.1l23.1-17.9a8 8 0 0 0-3-14.1l-93.3-22.5c-5-1.2-9.8 2.6-9.9 7.7l-.6 95.4a8 8 0 0 0 12.9 6.4l20.3-15.8C562.6 918.4 619.9 948 684 948c109.9 0 199.6-86.9 204-195.7.2-4.5-3.5-8.3-8-8.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileUnknown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm78 195a32 32 0 1 0 64 0 32 32 0 1 0-64 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileWord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFileZip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFire (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFolderAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1zm396-144.7H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFolderView (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683698855\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M309.1 554.3c-5.4 11.6-5.4 24.9 0 36.4C353.3 684 421.6 732 512.5 732s159.2-48.1 203.4-141.3c5.4-11.5 5.4-24.8 0.1-36.3l-0.1-0.1-0.1-0.1C671.7 461 603.4 413 512.5 413s-159.2 48.1-203.4 141.3zM512.5 477c62.1 0 107.4 30 141.1 95.5C620 638 574.6 668 512.5 668s-107.4-30-141.1-95.5c33.7-65.5 79-95.5 141.1-95.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M513 573m-56 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 298.4H521L403.7 186.2c-1.5-1.4-3.5-2.2-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFontColors (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zm-650.3-80h85c4.2 0 8-2.7 9.3-6.8l53.7-166h219.2l53.2 166c1.3 4 5 6.8 9.3 6.8h89.1c1.1 0 2.2-.2 3.2-.5a9.7 9.7 0 0 0 6-12.4L573.6 118.6a9.9 9.9 0 0 0-9.2-6.6H462.1c-4.2 0-7.9 2.6-9.2 6.6L244.5 723.1c-.4 1-.5 2.1-.5 3.2-.1 5.3 4.3 9.7 9.7 9.7zm255.9-516.1h4.1l83.8 263.8H424.9l84.7-263.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFontSize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M752 100c-61.8 0-112 50.2-112 112 0 47.7 29.9 88.5 72 104.6v27.6L512 601.4 312 344.2v-27.6c42.1-16.1 72-56.9 72-104.6 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 50.6 33.8 93.5 80 107.3v34.4c0 9.7 3.3 19.3 9.3 27L476 672.3v33.6c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-33.6l226.7-291.6c6-7.7 9.3-17.3 9.3-27v-34.4c46.2-13.8 80-56.7 80-107.3 0-61.8-50.2-112-112-112zM224 212a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm336 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm192-552a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineForm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 0 0-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFormatPainter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683552617\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M840 192h-56v-72c0-13.3-10.7-24-24-24H168c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h592c13.3 0 24-10.7 24-24V256h32v200H465c-22.1 0-40 17.9-40 40v136h-44c-4.4 0-8 3.6-8 8v228c0 0.6 0.1 1.3 0.2 1.9-0.1 2-0.2 4.1-0.2 6.1 0 46.4 37.6 84 84 84s84-37.6 84-84c0-2.1-0.1-4.1-0.2-6.1 0.1-0.6 0.2-1.2 0.2-1.9V640c0-4.4-3.6-8-8-8h-44V520h351c22.1 0 40-17.9 40-40V232c0-22.1-17.9-40-40-40zM720 352H208V160h512v192zM477 876c0 11-9 20-20 20s-20-9-20-20V696h40v180z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFullscreenExit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFullscreen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFunction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683610100\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M841 370c3-3.3 2.7-8.3-0.6-11.3-1.5-1.3-3.4-2.1-5.3-2.1h-72.6c-2.4 0-4.6 1-6.1 2.8L633.5 504.6c-2.9 3.4-7.9 3.8-11.3 0.9-0.9-0.8-1.6-1.7-2.1-2.8l-63.5-141.3c-1.3-2.9-4.1-4.7-7.3-4.7H380.7l0.9-4.7 8-42.3c10.5-55.4 38-81.4 85.8-81.4 18.6 0 35.5 1.7 48.8 4.7l14.1-66.8c-22.6-4.7-35.2-6.1-54.9-6.1-103.3 0-156.4 44.3-175.9 147.3l-9.4 49.4h-97.6c-3.8 0-7.1 2.7-7.8 6.4L181.9 415c-0.9 4.3 1.9 8.6 6.2 9.5 0.5 0.1 1.1 0.2 1.6 0.2H284l-89 429.9c-0.9 4.3 1.9 8.6 6.2 9.5 0.5 0.1 1.1 0.2 1.6 0.2H269c3.8 0 7.1-2.7 7.8-6.4l89.7-433.1h135.8l68.2 139.1c1.4 2.9 1 6.4-1.2 8.8l-180.6 203c-2.9 3.3-2.6 8.4 0.7 11.3 1.5 1.3 3.4 2 5.3 2h72.7c2.4 0 4.6-1 6.1-2.8l123.7-146.7c2.8-3.4 7.9-3.8 11.3-1 0.9 0.8 1.6 1.7 2.1 2.8L676.4 784c1.3 2.8 4.1 4.7 7.3 4.7h64.6c4.4 0 8-3.6 8-8 0-1.2-0.3-2.4-0.8-3.5l-95.2-198.9c-1.4-2.9-0.9-6.4 1.3-8.8L841 370z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFundProjectionScreen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683753031\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M312.1 591.5c3.1 3.1 8.2 3.1 11.3 0l101.8-101.8 86.1 86.2c3.1 3.1 8.2 3.1 11.3 0l226.3-226.5c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8c-3.1-3.1-8.2-3.1-11.3 0L517 485.3l-86.1-86.2c-3.1-3.1-8.2-3.1-11.3 0L275.3 543.4c-3.1 3.1-3.1 8.2 0 11.3l36.8 36.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M904 160H548V96c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H120c-17.7 0-32 14.3-32 32v520c0 17.7 14.3 32 32 32h356.4v32L311.6 884.1c-3.7 2.4-4.7 7.3-2.3 11l30.3 47.2v0.1c2.4 3.7 7.4 4.7 11.1 2.3L512 838.9l161.3 105.8c3.7 2.4 8.7 1.4 11.1-2.3v-0.1l30.3-47.2c2.4-3.7 1.3-8.6-2.3-11L548 776.3V744h356c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32z m-40 512H160V232h704v440z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFundView (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683816874\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M956 686.5l-0.1-0.1-0.1-0.1C911.7 593 843.4 545 752.5 545s-159.2 48.1-203.4 141.3v0.1c-5.4 11.5-5.4 24.9 0 36.4C593.3 816 661.6 864 752.5 864s159.2-48.1 203.4-141.3c5.4-11.5 5.4-24.8 0.1-36.2zM752.5 800c-62.1 0-107.4-30-141.1-95.5C645 639 690.4 609 752.5 609c62.1 0 107.4 30 141.1 95.5C860 770 814.6 800 752.5 800z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M753 705m-56 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M136 232h704v253h72V192c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32v520c0 17.7 14.3 32 32 32h352v-72H136V232z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M724.9 338.1l-36.8-36.8c-3.1-3.1-8.2-3.1-11.3 0L493 485.3l-86.1-86.2c-3.1-3.1-8.2-3.1-11.3 0L251.3 543.4c-3.1 3.1-3.1 8.2 0 11.3l36.8 36.8c3.1 3.1 8.2 3.1 11.3 0l101.8-101.8 86.1 86.2c3.1 3.1 8.2 3.1 11.3 0l226.3-226.5c3.2-3.1 3.2-8.2 0-11.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFund (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L531 565 416.6 450.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineFunnelPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V650h182.9v148zm9.6-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGateway (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 392c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H744c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h56v240H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16V648c0-8.8-7.2-16-16-16h-56V392h56zM792 240h88v88h-88v-88zm-648 88v-88h88v88h-88zm88 456h-88v-88h88v88zm648-88v88h-88v-88h88zm-80-64h-56c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16h-56V392h56c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h56v240z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGif (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683621237\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M944 299H692c-4.4 0-8 3.6-8 8v406c0 4.4 3.6 8 8 8h59.2c4.4 0 8-3.6 8-8V549.9h168.2c4.4 0 8-3.6 8-8V495c0-4.4-3.6-8-8-8H759.2V364.2H944c4.4 0 8-3.6 8-8V307c0-4.4-3.6-8-8-8zM588 300h-56c-4.4 0-8 3.6-8 8v406c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V308c0-4.4-3.6-8-8-8zM452 500.9H290.5c-4.4 0-8 3.6-8 8v43.7c0 4.4 3.6 8 8 8h94.9l-0.3 8.9c-1.2 58.8-45.6 98.5-110.9 98.5-76.2 0-123.9-59.7-123.9-156.7 0-95.8 46.8-155.2 121.5-155.2 54.8 0 93.1 26.9 108.5 75.4h76.2c-13.6-87.2-86-143.4-184.7-143.4C150 288 72 375.2 72 511.9 72 650.2 149.1 736 273 736c114.1 0 187-70.7 187-181.6v-45.5c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zm-334-74c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm-138-70c38.6 0 70 31.4 70 70v70h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70zM180 482V378h298v104H180zm48 68h250v308H228V550zm568 308H546V550h250v308zm48-376H546V378h298v104z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGithub (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGitlab (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M913.9 552.2L805 181.4v-.1c-7.6-22.9-25.7-36.5-48.3-36.5-23.4 0-42.5 13.5-49.7 35.2l-71.4 213H388.8l-71.4-213c-7.2-21.7-26.3-35.2-49.7-35.2-23.1 0-42.5 14.8-48.4 36.6L110.5 552.2c-4.4 14.7 1.2 31.4 13.5 40.7l368.5 276.4c2.6 3.6 6.2 6.3 10.4 7.8l8.6 6.4 8.5-6.4c4.9-1.7 9-4.7 11.9-8.9l368.4-275.4c12.4-9.2 18-25.9 13.6-40.6zM751.7 193.4c1-1.8 2.9-1.9 3.5-1.9 1.1 0 2.5.3 3.4 3L818 394.3H684.5l67.2-200.9zm-487.4 1c.9-2.6 2.3-2.9 3.4-2.9 2.7 0 2.9.1 3.4 1.7l67.3 201.2H206.5l57.8-200zM158.8 558.7l28.2-97.3 202.4 270.2-230.6-172.9zm73.9-116.4h122.1l90.8 284.3-212.9-284.3zM512.9 776L405.7 442.3H620L512.9 776zm157.9-333.7h119.5L580 723.1l90.8-280.8zm-40.7 293.9l207.3-276.7 29.5 99.2-236.8 177.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGlobal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0 0 10-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 0 0 3.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 0 0-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 0 1 887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 0 1-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 0 1 115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 0 1 540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 0 0 540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 0 1-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 0 0-81.5 55.9A373.86 373.86 0 0 1 137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 0 1-107.6 69.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128zm2.5 282.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGooglePlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M879.5 470.4c-.3-27-.4-54.2-.5-81.3h-80.8c-.3 27-.5 54.1-.7 81.3-27.2.1-54.2.3-81.2.6v80.9c27 .3 54.2.5 81.2.8.3 27 .3 54.1.5 81.1h80.9c.1-27 .3-54.1.5-81.3 27.2-.3 54.2-.4 81.2-.7v-80.9c-26.9-.2-54.1-.2-81.1-.5zm-530 .4c-.1 32.3 0 64.7.1 97 54.2 1.8 108.5 1 162.7 1.8-23.9 120.3-187.4 159.3-273.9 80.7-89-68.9-84.8-220 7.7-284 64.7-51.6 156.6-38.9 221.3 5.8 25.4-23.5 49.2-48.7 72.1-74.7-53.8-42.9-119.8-73.5-190-70.3-146.6-4.9-281.3 123.5-283.7 270.2-9.4 119.9 69.4 237.4 180.6 279.8 110.8 42.7 252.9 13.6 323.7-86 46.7-62.9 56.8-143.9 51.3-220-90.7-.7-181.3-.6-271.9-.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGoogle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M881 442.4H519.7v148.5h206.4c-8.9 48-35.9 88.6-76.6 115.8-34.4 23-78.3 36.6-129.9 36.6-99.9 0-184.4-67.5-214.6-158.2-7.6-23-12-47.6-12-72.9s4.4-49.9 12-72.9c30.3-90.6 114.8-158.1 214.7-158.1 56.3 0 106.8 19.4 146.6 57.4l110-110.1c-66.5-62-153.2-100-256.6-100-149.9 0-279.6 86-342.7 211.4-26 51.8-40.8 110.4-40.8 172.4S151 632.8 177 684.6C240.1 810 369.8 896 519.7 896c103.6 0 190.4-34.4 253.8-93 72.5-66.8 114.4-165.2 114.4-282.1 0-27.2-2.4-53.3-6.9-78.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineGroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683739097\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 820.1V203.9c28-9.9 48-36.6 48-67.9 0-39.8-32.2-72-72-72-31.3 0-58 20-67.9 48H203.9C194 84 167.3 64 136 64c-39.8 0-72 32.2-72 72 0 31.3 20 58 48 67.9v616.2C84 830 64 856.7 64 888c0 39.8 32.2 72 72 72 31.3 0 58-20 67.9-48h616.2c9.9 28 36.6 48 67.9 48 39.8 0 72-32.2 72-72 0-31.3-20-58-48-67.9zM888 112c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zM136 912c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z m0-752c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z m704 680H184V184h656v656z m48 72c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M288 474h448c8.8 0 16-7.2 16-16V282c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16z m56-136h336v64H344v-64zM288 758h448c8.8 0 16-7.2 16-16V566c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16z m56-136h336v64H344v-64z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHarmonyOS (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"transform\":\"translate(134 65)\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M377.5 0C585.987 0 755 169.013 755 377.5S585.987 755 377.5 755 0 585.987 0 377.5 169.013 0 377.5 0m0 64C204.359 64 64 204.359 64 377.5S204.359 691 377.5 691 691 550.641 691 377.5 550.641 64 377.5 64\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M611 824 611 896 144 896 144 824z\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineHdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM496 208H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 244a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHeatMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-790.4-23.9L512 231.9 858.7 832H165.3zm319-474.1l-228 394c-12.3 21.3 3.1 48 27.7 48h455.8c24.7 0 40.1-26.7 27.7-48L539.7 358c-6.2-10.7-17-16-27.7-16-10.8 0-21.6 5.3-27.7 16zm214 386H325.7L512 422l186.3 322zm-214-194.1l-57 98.4C415 669.5 430.4 696 455 696h114c24.6 0 39.9-26.5 27.7-47.7l-57-98.4c-6.1-10.6-16.9-15.9-27.7-15.9s-21.5 5.3-27.7 15.9zm57.1 98.4h-58.7l29.4-50.7 29.3 50.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHighlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHistory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 0 0 3 14.1zm167.7 301.1l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 0 1-112.5 75.9 352.18 352.18 0 0 1-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 0 1-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 0 1 171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 0 1 112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 0 1 775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M300,276.497424 C317.32646,286.500861 338.67354,286.500861 356,276.497424 C373.326461,266.493987 384,248.006874 384,228 C384,207.993128 373.326461,189.506014 356,179.502578 C338.67354,169.499141 317.32646,169.499141 300,179.502578 C282.673539,189.506014 272,207.993128 272,228 C272,248.006874 282.673539,266.493987 300,276.497424 Z M300,560.497426 C317.32646,570.500863 338.67354,570.500863 356,560.497426 C373.326461,550.493989 384,532.006876 384,512.000002 C384,491.993129 373.326461,473.506016 356,463.502579 C338.67354,453.499142 317.32646,453.499142 300,463.502579 C282.673539,473.506016 272,491.993129 272,512.000002 C272,532.006876 282.673539,550.493989 300,560.497426 Z M640,228 C640,248.006874 650.673539,266.493987 668,276.497424 C685.32646,286.500861 706.67354,286.500861 724,276.497424 C741.326461,266.493987 752,248.006874 752,228 C752,207.993128 741.326461,189.506014 724,179.502578 C706.67354,169.499141 685.32646,169.499141 668,179.502578 C650.673539,189.506014 640,207.993128 640,228 L640,228 Z M640,512.000002 C640,532.006876 650.673539,550.493989 668,560.497426 C685.32646,570.500863 706.67354,570.500863 724,560.497426 C741.326461,550.493989 752,532.006876 752,512.000002 C752,491.993129 741.326461,473.506016 724,463.502579 C706.67354,453.499142 685.32646,453.499142 668,463.502579 C650.673539,473.506016 640,491.993129 640,512.000002 L640,512.000002 Z M300,844.497427 C317.32646,854.500864 338.67354,854.500864 356,844.497427 C373.326461,834.493991 384,816.006877 384,796.000003 C384,775.993131 373.326461,757.506018 356,747.502581 C338.67354,737.499144 317.32646,737.499144 300,747.502581 C282.673539,757.506018 272,775.993131 272,796.000003 C272,816.006877 282.673539,834.493991 300,844.497427 Z M640,796.000003 C640,816.006877 650.673539,834.493991 668,844.497427 C685.32646,854.500864 706.67354,854.500864 724,844.497427 C741.326461,834.493991 752,816.006877 752,796.000003 C752,775.993131 741.326461,757.506018 724,747.502581 C706.67354,737.499144 685.32646,737.499144 668,747.502581 C650.673539,757.506018 640,775.993131 640,796.000003 L640,796.000003 Z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.9 63.9 0 0 0-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0 0 18.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHourglass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineHtml5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2zM281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineIdcard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineIe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M852.6 367.6c16.3-36.9 32.1-90.7 32.1-131.8 0-109.1-119.5-147.6-314.5-57.9-161.4-10.8-316.8 110.5-355.6 279.7 46.3-52.3 117.4-123.4 183-151.7C316.1 378.3 246.7 470 194 565.6c-31.1 56.9-66 148.8-66 217.5 0 147.9 139.3 129.8 270.4 63 47.1 23.1 99.8 23.4 152.5 23.4 145.7 0 276.4-81.4 325.2-219H694.9c-78.8 132.9-295.2 79.5-295.2-71.2h493.2c9.6-65.4-2.5-143.6-40.3-211.7zM224.8 648.3c26.6 76.7 80.6 143.8 150.4 185-133.1 73.4-259.9 43.6-150.4-185zm174-163.3c3-82.7 75.4-142.3 156-142.3 80.1 0 153 59.6 156 142.3h-312zm276.8-281.4c32.1-15.4 72.8-33 108.8-33 47.1 0 81.4 32.6 81.4 80.6 0 30-11.1 73.5-21.9 101.8-39.3-63.5-98.9-122.4-168.3-149.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineImport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32ZM653.3 599.4l52.2-52.2c4.7-4.7 1.9-12.8-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4Z\",\"transform\":\"matrix(1 0 0 -1 0 1024)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInbox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInfoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInfo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448 224a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96 168h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInsertRowAbove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683507961\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M878.7 336H145.3c-18.4 0-33.3 14.3-33.3 32v464c0 17.7 14.9 32 33.3 32h733.3c18.4 0 33.3-14.3 33.3-32V368c0.1-17.7-14.8-32-33.2-32zM360 792H184V632h176v160z m0-224H184V408h176v160z m240 224H424V632h176v160z m0-224H424V408h176v160z m240 224H664V632h176v160z m0-224H664V408h176v160zM904 160H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInsertRowBelow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683503597\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 768H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zM878.7 160H145.3c-18.4 0-33.3 14.3-33.3 32v464c0 17.7 14.9 32 33.3 32h733.3c18.4 0 33.3-14.3 33.3-32V192c0.1-17.7-14.8-32-33.2-32zM360 616H184V456h176v160z m0-224H184V232h176v160z m240 224H424V456h176v160z m0-224H424V232h176v160z m240 224H664V456h176v160z m0-224H664V232h176v160z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInsertRowLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683561749\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M248 112h-80c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8zM832 112H368c-17.7 0-32 14.9-32 33.3v733.3c0 18.4 14.3 33.3 32 33.3h464c17.7 0 32-14.9 32-33.3V145.3c0-18.4-14.3-33.3-32-33.3zM568 840H408V664h160v176z m0-240H408V424h160v176z m0-240H408V184h160v176z m224 480H632V664h160v176z m0-240H632V424h160v176z m0-240H632V184h160v176z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInsertRowRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683555439\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M856 112h-80c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8zM656 112H192c-17.7 0-32 14.9-32 33.3v733.3c0 18.4 14.3 33.3 32 33.3h464c17.7 0 32-14.9 32-33.3V145.3c0-18.4-14.3-33.3-32-33.3zM392 840H232V664h160v176z m0-240H232V424h160v176z m0-240H232V184h160v176z m224 480H456V664h160v176z m0-240H456V424h160v176z m0-240H456V184h160v176z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInstagram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 306.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 717.1 512 717.1 717.1 625.5 717.1 512 625.5 306.9 512 306.9zm0 338.4c-73.4 0-133.3-59.9-133.3-133.3S438.6 378.7 512 378.7 645.3 438.6 645.3 512 585.4 645.3 512 645.3zm213.5-394.6c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.3 47.9-47.9a47.84 47.84 0 0 0-47.9-47.9zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zm-88 235.8c-7.3 18.2-16.1 31.8-30.2 45.8-14.1 14.1-27.6 22.9-45.8 30.2C695.2 844.7 570.3 840 512 840c-58.3 0-183.3 4.7-235.9-16.1-18.2-7.3-31.8-16.1-45.8-30.2-14.1-14.1-22.9-27.6-30.2-45.8C179.3 695.2 184 570.3 184 512c0-58.3-4.7-183.3 16.1-235.9 7.3-18.2 16.1-31.8 30.2-45.8s27.6-22.9 45.8-30.2C328.7 179.3 453.7 184 512 184s183.3-4.7 235.9 16.1c18.2 7.3 31.8 16.1 45.8 30.2 14.1 14.1 22.9 27.6 30.2 45.8C844.7 328.7 840 453.7 840 512c0 58.3 4.7 183.2-16.2 235.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInsurance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M441.6 306.8L403 288.6a6.1 6.1 0 0 0-8.4 3.7c-17.5 58.5-45.2 110.1-82.2 153.6a6.05 6.05 0 0 0-1.2 5.6l13.2 43.5c1.3 4.4 7 5.7 10.2 2.4 7.7-8.1 15.4-16.9 23.1-26V656c0 4.4 3.6 8 8 8H403c4.4 0 8-3.6 8-8V393.1a429.2 429.2 0 0 0 33.6-79c1-2.9-.3-6-3-7.3zm26.8 9.2v127.2c0 4.4 3.6 8 8 8h65.9v18.6h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c1.9 3.1 6.2 3.8 8.9 1.4 31.6-26.8 58.7-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V536c21.3 41.7 47.5 77.5 78.1 106.9 2.6 2.5 6.8 2.1 8.9-.7l26.3-35.3c2-2.7 1.4-6.5-1.2-8.4-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8V478c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H476.4c-4.4 0-8 3.6-8 8zm51.5 42.8h97.9v41.6h-97.9v-41.6zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineInteraction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineIssuesClose (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72-112c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48zm400-188h-59.3c-2.6 0-5 1.2-6.5 3.3L763.7 538.1l-49.9-68.8a7.92 7.92 0 0 0-6.5-3.3H648c-6.5 0-10.3 7.4-6.5 12.7l109.2 150.7a16.1 16.1 0 0 0 26 0l165.8-228.7c3.8-5.3 0-12.7-6.5-12.7zm-44 306h-64.2c-5.5 0-10.6 2.9-13.6 7.5a352.2 352.2 0 0 1-49.8 62.2A355.92 355.92 0 0 1 651.1 840a355 355 0 0 1-138.7 27.9c-48.1 0-94.8-9.4-138.7-27.9a355.92 355.92 0 0 1-113.3-76.3A353.06 353.06 0 0 1 184 650.5c-18.6-43.8-28-90.5-28-138.5s9.4-94.7 28-138.5c17.9-42.4 43.6-80.5 76.4-113.2 32.8-32.7 70.9-58.4 113.3-76.3a355 355 0 0 1 138.7-27.9c48.1 0 94.8 9.4 138.7 27.9 42.4 17.9 80.5 43.6 113.3 76.3 19 19 35.6 39.8 49.8 62.2 2.9 4.7 8.1 7.5 13.6 7.5H892c6 0 9.8-6.3 7.2-11.6C828.8 178.5 684.7 82 517.7 80 278.9 77.2 80.5 272.5 80 511.2 79.5 750.1 273.3 944 512.4 944c169.2 0 315.6-97 386.7-238.4A8 8 0 0 0 892 694z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineItalic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M798 160H366c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h181.2l-156 544H229c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H474.4l156-544H798c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineJavaScript (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M353 16H192.545v425.615c0 105.313-36.166 134.718-99.104 134.718-29.494 0-56.055-5.05-76.718-12.144L0 688.784C29.484 698.924 74.73 705 110.126 705 254.631 705 353 637.16 353 442.658zM702.49 0C547.26 0 449 88.126 449 204.609c0 100.313 75.67 163.12 185.696 203.629 79.577 28.358 111.03 53.695 111.03 95.218 0 45.579-36.358 74.96-105.13 74.96-63.868 0-121.849-21.311-161.146-42.573v-.042L449 662.427C486.361 683.735 556.12 705 631.741 705 813.52 705 898 607.753 898 493.293c0-97.243-54.036-160.035-170.937-204.627-86.47-34.432-122.813-53.669-122.813-97.227 0-34.45 31.446-65.834 96.3-65.834 63.834 0 107.728 21.445 133.307 34.632L872.193 32.05C832.103 14.461 778.109 0 702.49 0\",\"transform\":\"translate(63 160)\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineJava (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M212.68 692.99s-34.325 19.95 24.343 26.6c71.1 8.05 107.351 7 185.632-7.874 0 0 20.665 12.949 49.385 24.149-175.475 75.074-397.184-4.375-259.36-42.875m-21.366-98.173s-38.352 28.35 20.315 34.475c75.83 7.875 135.897 8.4 239.571-11.55 0 0 14.36 14.525 36.952 22.4-212.427 62.123-448.846 5.075-296.838-45.325m180.73-166.422c43.256 49.699-11.384 94.498-11.384 94.498s109.804-56.7 59.368-127.573c-47.11-66.15-83.185-99.049 112.255-212.273.175 0-306.819 76.65-160.24 245.348M604.26 765.439s25.393 20.825-27.846 37.1c-101.397 30.625-421.7 39.9-510.664 1.225-32.048-13.825 28.02-33.25 46.934-37.275 19.613-4.2 30.997-3.5 30.997-3.5-35.551-25.025-229.94 49.175-98.771 70.35 357.605 58.1 652.165-26.075 559.35-67.9M229.142 493.144S66.1 531.818 171.35 545.818c44.482 5.95 133.095 4.55 215.58-2.275 67.423-5.6 135.196-17.85 135.196-17.85s-23.818 10.15-40.98 21.875C315.653 591.143-3.95 570.843 87.99 526.393c77.93-37.45 141.151-33.25 141.151-33.25M521.6 656.416c168.296-87.324 90.365-171.322 36.077-159.948-13.31 2.8-19.264 5.25-19.264 5.25s4.903-7.7 14.36-11.025c107.351-37.8 190.01 111.299-34.675 170.273 0-.175 2.627-2.45 3.502-4.55M420.028 0s93.166 93.1-88.438 236.246c-145.53 114.8-33.274 180.424 0 255.148-84.936-76.65-147.28-144.024-105.425-206.848C287.634 192.672 457.68 147.873 420.028 0m-174.25 893.188c161.466 10.325 409.443-5.775 415.222-82.075 0 0-11.208 28.875-133.445 51.975-137.824 25.9-307.87 22.925-408.567 6.3 0-.175 20.665 16.975 126.79 23.8\",\"transform\":\"translate(182 64)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineKey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L255.8 713.6l-62.3-62.3c-3.148-3.08-8.252-3.08-11.4 0l-39.8 39.8c-3.08 3.148-3.08 8.252 0 11.4l62.3 62.3-44.9 44.9-62.3-62.3c-3.148-3.08-8.252-3.08-11.4 0l-39.8 39.8c-3.08 3.148-3.08 8.252 0 11.4l110.3 111.2c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6A304.1 304.1 0 0 0 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112m161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineKubernetes (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M399.987 0a61.547 61.547 0 0 0-26.801 6.135L101.882 137.131c-16.876 8.144-29.148 23.57-33.313 41.849L1.53 473.498A61.767 61.767 0 0 0 13.39 525.56l187.815 236.15c11.69 14.704 29.484 23.271 48.256 23.271h301.052c18.772 0 36.566-8.567 48.256-23.272l187.815-236.115v-.034c11.633-14.637 16.03-33.792 11.893-52.028v-.034L731.405 178.98v-.035c-4.164-18.25-16.429-33.654-33.313-41.814L426.822 6.135a17.426 17.426 0 0 0-.034-.034A61.764 61.764 0 0 0 399.987 0m0 35.097c3.942 0 7.875.876 11.55 2.639L682.84 168.732a26.538 26.538 0 0 1 14.36 18.028l67.037 294.518a26.564 26.564 0 0 1-5.106 22.45L571.317 739.875c-5.05 6.353-12.692 10.008-20.804 10.008H249.461c-8.112 0-15.72-3.655-20.77-10.008L40.876 503.727c-5.035-6.339-6.929-14.575-5.14-22.45l67.071-294.483c1.801-7.903 7.057-14.52 14.326-18.028v-.034L388.437 37.736a26.521 26.521 0 0 1 11.55-2.64m-.137 73.826c-2.476 0-4.99.5-7.403 1.508-9.651 4.212-14.22 15.437-10.008 25.09 4.036 9.475 5.425 18.936 6.478 28.412.35 4.914.552 9.657.377 14.395.526 4.739-1.94 9.486-5.45 14.224-3.685 4.738-4.031 9.486-4.558 14.224-48.155 4.727-91.506 25.83-124.65 57.546l-.309-.171c-4.036-2.632-7.875-5.274-14.017-5.45-5.79-.35-11.06-1.391-14.395-4.9-3.685-2.809-7.359-5.955-10.693-9.29-6.843-6.667-13.358-13.872-18.096-22.997-2.281-4.387-6.495-7.915-11.584-9.494-10.178-2.808-20.7 2.983-23.683 13.161-2.983 10.003 2.983 20.705 13.161 23.512 9.827 2.984 18.078 7.897 26.15 13.162a127.38 127.38 0 0 1 11.242 8.602c4.036 2.633 6.132 7.546 7.711 13.162 1.158 5.625 4.386 8.879 7.54 12.03-24.02 34.206-38.248 75.777-38.248 120.645 0 7.422.412 14.743 1.165 21.97-3.937 1.378-7.833 2.873-11.173 6.82-3.86 4.387-8.08 7.875-12.818 8.226a94.03 94.03 0 0 1-14.018 2.64c-9.475 1.228-19.13 1.934-29.131-.172-4.914-.878-10.35.166-14.738 3.324-8.598 5.967-10.524 17.896-4.558 26.494 6.142 8.6 18.066 10.735 26.664 4.593 8.423-5.966 17.368-9.321 26.493-12.304 4.563-1.404 9.143-2.619 13.88-3.496 4.563-1.58 9.64-.19 15.08 2.09 4.52 2.333 8.523 2.148 12.476 1.748 15.446 50.08 49.22 92.035 93.325 118.52-1.507 4.217-2.92 8.611-1.577 14.156 1.053 5.79 1.223 11.25-1.234 15.286-1.93 4.387-4.025 8.573-6.306 12.784-4.913 8.073-10.17 16.15-17.89 23.17-3.685 3.334-6.165 8.064-6.34 13.504-.352 10.529 7.91 19.322 18.438 19.673 10.529.351 19.493-7.91 19.844-18.44.176-10.353 2.976-19.459 6.135-28.584 1.58-4.387 3.515-8.778 5.62-12.99 1.58-4.563 5.776-7.92 10.865-10.728 5.07-2.616 7.35-6.316 9.63-10.214 22.15 7.94 45.898 12.51 70.74 12.51 25.266 0 49.402-4.72 71.87-12.92 2.377 4.055 4.819 7.912 9.905 10.624 5.089 2.983 9.285 6.165 10.864 10.728 2.106 4.387 3.87 8.774 5.45 13.161 3.158 9.125 5.784 18.231 6.135 28.585 0 5.089 2.098 10.024 6.134 13.71 7.897 7.019 19.847 6.487 27.042-1.234 7.019-7.897 6.487-19.848-1.234-27.043-7.721-6.844-12.981-15.093-17.72-23.34-2.28-4.036-4.375-8.402-6.305-12.613-2.457-4.212-2.291-9.496-1.063-15.287 1.404-5.966-.173-10.346-1.576-14.909l-.138-.445c43.755-26.75 77.084-68.833 92.194-118.897l.583.034c4.913.35 9.644.858 14.909-2.125 5.264-2.457 10.552-3.872 15.114-2.468 4.562.702 9.284 1.754 13.846 2.982 9.125 2.632 18.272 5.794 26.87 11.585 4.212 2.632 9.473 3.867 14.737 2.639 10.354-2.282 16.848-12.443 14.566-22.621-2.28-10.354-12.472-16.848-22.825-14.567-10.178 2.282-19.652 1.906-29.304 1.028-4.737-.526-9.314-1.209-14.051-2.262-4.738-.35-8.92-3.5-12.956-7.711-4.036-4.738-8.598-5.965-13.16-7.37l-.309-.102c.61-6.51.994-13.077.994-19.742 0-43.507-13.282-83.992-35.986-117.595 3.328-3.502 6.69-6.828 7.917-12.784 1.579-5.615 3.675-10.529 7.711-13.161 3.51-3.159 7.381-5.967 11.242-8.774 7.896-5.265 16.152-10.354 25.978-13.162 4.914-1.404 9.094-4.751 11.55-9.665 4.914-9.3 1.25-20.865-8.225-25.603-9.3-4.913-20.898-1.25-25.636 8.226-4.738 9.125-11.223 16.33-17.89 22.998-3.51 3.334-7.009 6.51-10.694 9.494-3.334 3.51-8.604 4.55-14.394 4.901-6.142.176-10.016 2.989-14.052 5.621-33.462-33.151-77.946-55.16-127.392-60.014-.527-4.738-.874-9.486-4.559-14.224-3.51-4.738-5.975-9.485-5.449-14.224-.175-4.738.026-9.481.377-14.395 1.053-9.476 2.442-18.937 6.478-28.413 1.93-4.563 2.105-9.992 0-15.08-3.159-7.24-10.258-11.533-17.685-11.517m-25.156 133.91-.857 6.751c-2.457 18.953-4.209 38.08-5.964 57.033a875.999 875.999 0 0 0-2.639 30.195c-8.598-6.142-17.196-12.648-26.321-18.44-15.793-10.704-31.594-21.422-47.914-31.6l-5.518-3.427c24.68-21.267 55.354-35.638 89.213-40.513m50.586 0c35.246 5.074 66.986 20.51 92.16 43.22l-5.86 3.7c-16.145 10.354-31.744 21.068-47.537 31.773-6.317 4.212-12.473 8.603-18.439 12.99-4.738 3.334-11.233.341-11.584-5.45-.527-7.546-1.218-14.904-1.92-22.45-1.754-18.952-3.506-38.08-5.963-57.032zm-173.009 78.83 5.587 5.827c13.336 13.863 26.857 27.205 40.544 40.717 5.791 5.791 11.582 11.252 17.548 16.692 4.211 3.86 2.63 10.69-2.81 12.27-8.599 2.632-17.21 5.075-25.808 7.883-18.074 5.967-36.317 11.604-54.39 18.097l-7.952 2.776c-.174-3.21-.48-6.376-.48-9.631 0-34.926 10.267-67.33 27.761-94.63m297.522 3.462c16.177 26.577 25.67 57.694 25.67 91.169 0 2.931-.304 5.776-.445 8.671l-6.237-1.988c-18.25-5.966-36.48-11.084-54.906-16.348-11.932-3.51-23.882-6.648-35.815-9.631 8.95-8.599 18.272-17.035 26.87-25.809 13.512-13.512 27.007-27.022 40.168-41.06zm-160.67 56.072h21.386c3.334 0 6.505 1.588 8.26 4.045l13.674 17.205c1.93 2.282 2.652 5.586 2.125 8.569l-4.935 21.25c-.527 3.334-2.813 5.96-5.62 7.54l-19.64 9.117a9.363 9.363 0 0 1-9.116 0l-19.672-9.117c-2.808-1.58-5.27-4.206-5.621-7.54l-4.901-21.25c-.526-2.983.195-6.287 2.125-8.569l13.675-17.205c1.754-2.457 4.925-4.045 8.26-4.045m-63.371 83.698c5.44-.878 9.851 4.576 7.746 9.665-3.334 8.774-6.51 17.377-9.494 26.151-6.493 18.075-12.815 35.972-18.781 54.222l-2.4 7.54c-31.23-20.767-55.218-51.326-67.997-87.296l9.322-.788c19.127-1.755 37.903-4.06 57.03-6.341 8.248-.877 16.327-2.1 24.574-3.153m151.623 2.468c8.247.877 16.326 1.765 24.574 2.467 19.127 1.755 38.074 3.502 57.2 4.73l6.101.343c-12.548 35.512-36.008 65.782-66.592 86.576l-1.987-6.375c-5.791-18.25-12.092-36.322-18.234-54.221-2.807-8.073-5.619-15.958-8.602-23.855-1.93-5.09 2.276-10.367 7.54-9.665m-76.086 34.616c2.5 0 5.005 1.26 6.41 3.805 3.86 7.37 7.92 14.57 12.132 21.764 9.476 16.495 18.92 33.176 29.098 49.32l4.147 6.718a176.026 176.026 0 0 1-53.09 8.192 176.144 176.144 0 0 1-51.58-7.712l4.387-7.026c10.178-16.145 19.824-32.654 29.475-49.15a451.58 451.58 0 0 0 12.647-22.106c1.403-2.545 3.874-3.805 6.374-3.805\",\"transform\":\"translate(112 111)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLaptop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLayout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M365.3 518.5l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a8.05 8.05 0 0 0 0 13z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0 1 42.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLineChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLineHeight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M648 160H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm272.8 546H856V318h64.8c6 0 9.4-7 5.7-11.7L825.7 178.7a7.14 7.14 0 0 0-11.3 0L713.6 306.3a7.23 7.23 0 0 0 5.7 11.7H784v388h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5a7.2 7.2 0 0 0-5.6-11.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLine (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLinkedin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 1 0-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLinux (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M387.86 0c-5.786 0-11.759.299-17.88.784-157.798 12.431-115.95 179.448-118.34 235.108-2.874 40.803-11.198 72.945-39.234 112.776-33.037 39.235-79.402 102.66-101.39 168.772-10.378 31.06-15.305 62.865-10.714 92.916a15.828 15.828 0 0 0-4.143 5.04c-9.706 10.004-16.762 22.436-24.713 31.32-7.429 7.43-18.106 9.968-29.753 14.933C30.01 666.726 17.13 671.69 9.44 687.07c-3.36 7.018-5.077 14.67-4.928 22.435 0 7.43 1.008 14.97 2.053 20.01 2.165 14.895 4.33 27.214 1.456 36.21-9.258 25.385-10.415 42.781-3.92 55.436 6.496 12.469 19.972 17.509 35.054 22.436 30.275 7.466 71.301 5.04 103.592 22.361 34.569 17.434 69.66 25.05 97.657 17.546a66.01 66.01 0 0 0 45.096-35.278c21.913-.112 45.917-10.042 84.367-12.468 26.094-2.165 58.759 9.967 96.239 7.429.933 5.04 2.351 7.428 4.255 12.468l.112.112c14.597 29.043 41.55 42.258 70.331 39.981 28.782-2.24 59.43-20.01 84.255-48.754 23.556-28.558 62.828-40.466 88.773-56.108 12.99-7.429 23.48-17.508 24.227-31.843.859-14.932-7.428-30.312-26.654-51.404v-3.621l-.112-.112c-6.346-7.466-9.332-19.972-12.617-34.568-3.174-14.97-6.795-29.342-18.367-39.048h-.112c-2.203-2.016-4.592-2.501-7.018-5.04a13.327 13.327 0 0 0-7.093-2.389c16.09-47.709 9.855-95.193-6.458-137.9-19.898-52.636-54.69-98.478-81.195-130.022-29.715-37.517-58.833-73.056-58.273-125.767C521.168 148.837 529.008.224 387.86 0m19.748 127.11h.486c7.951 0 14.783 2.315 21.8 7.392 7.131 5.04 12.32 12.394 16.389 19.898 3.92 9.668 5.898 17.134 6.197 27.027 0-.747.224-1.493.224-2.203v3.883a3.21 3.21 0 0 1-.15-.784l-.149-.896a67.456 67.456 0 0 1-5.6 26.355 35.576 35.576 0 0 1-7.95 12.506 26.505 26.505 0 0 0-3.286-1.568c-3.92-1.68-7.429-2.389-10.64-4.965a48.978 48.978 0 0 0-8.175-2.463c1.83-2.203 5.413-4.965 6.795-7.392 1.978-4.778 3.06-9.855 3.285-15.007v-.71a45.17 45.17 0 0 0-2.277-14.931c-1.68-5.04-3.77-7.504-6.832-12.469-3.136-2.464-6.234-4.928-9.967-4.928h-.598c-3.471 0-6.57 1.12-9.78 4.928a29.865 29.865 0 0 0-7.653 12.469 44.05 44.05 0 0 0-3.36 14.932v.71c.075 3.322.299 6.681.747 9.966-7.205-2.5-16.351-5.04-22.66-7.54-.375-2.46-.6-4.942-.672-7.43v-.746a66.15 66.15 0 0 1 5.6-28.707 40.455 40.455 0 0 1 16.052-19.897 36.77 36.77 0 0 1 22.174-7.43m-110.573 2.203h1.344c5.3 0 10.08 1.792 14.895 5.04 5.45 4.816 9.855 10.751 12.842 17.359 3.36 7.429 5.263 14.97 5.711 24.9v.149c.261 5.002.224 7.503-.074 9.93v2.986c-1.12.261-2.091.672-3.099.896-5.674 2.053-10.229 5.04-14.67 7.466.447-3.322.484-6.682.111-9.967v-.56c-.448-4.965-1.456-7.429-3.061-12.431a22.884 22.884 0 0 0-6.197-9.968 9.258 9.258 0 0 0-6.831-2.389h-.784c-2.65.224-4.853 1.53-6.944 4.928a20.607 20.607 0 0 0-4.48 10.08 35.24 35.24 0 0 0-.858 12.356v.522c.448 5.04 1.381 7.504 3.024 12.469 1.68 5.002 3.62 7.466 6.16 10.004.41.336.783.672 1.268.896-2.613 2.128-4.367 2.613-6.57 5.077a11.386 11.386 0 0 1-4.89 2.539 97.844 97.844 0 0 1-10.266-15.007 66.15 66.15 0 0 1-5.786-24.9 65.665 65.665 0 0 1 2.986-24.937 53.383 53.383 0 0 1 10.565-19.971c4.778-4.965 9.706-7.467 15.604-7.467M348.215 193c12.357 0 27.326 2.427 45.357 14.895 10.938 7.467 19.524 10.042 39.31 17.471h.111c9.52 5.077 15.12 9.93 17.844 14.895v-4.89a21.316 21.316 0 0 1 .598 17.545c-4.592 11.61-19.263 24.041-39.72 31.47v.075c-10.005 5.04-18.703 12.43-28.931 17.358-10.304 5.04-21.95 10.9-37.78 9.968a42.52 42.52 0 0 1-16.723-2.502 133.121 133.121 0 0 1-12.02-7.391c-7.28-5.04-13.552-12.394-22.847-17.359v-.186h-.187c-14.932-9.184-22.995-19.114-25.609-26.542-2.575-10.005-.186-17.509 7.205-22.399 8.362-5.04 14.186-10.116 18.031-12.543 3.882-2.762 5.338-3.808 6.57-4.89h.075v-.112c6.309-7.541 16.276-17.508 31.32-22.436 5.19-1.344 10.975-2.427 17.396-2.427m104.489 80c13.402 52.898 44.685 129.724 64.806 166.98 10.676 19.935 31.918 61.932 41.138 112.888 5.824-.187 12.282.672 19.15 2.39 24.116-62.38-20.382-129.426-40.652-148.054-8.25-7.504-8.66-12.506-4.592-12.506 21.988 19.935 50.956 58.684 61.446 102.92 4.816 19.973 5.936 41.214.784 62.343 2.501 1.045 5.04 2.277 7.653 2.501 38.525 19.935 52.748 35.016 45.917 57.377v-1.605c-2.277-.112-4.48 0-6.757 0h-.56c5.637-17.433-6.794-30.798-39.757-45.693-34.158-14.932-61.446-12.543-66.113 17.359-.261 1.605-.448 2.464-.634 5.04-2.539.858-5.19 1.978-7.802 2.389-16.053 10.004-24.713 24.974-29.604 44.311-4.853 19.898-6.346 43.155-7.652 69.771v.112c-.784 12.469-6.384 31.283-11.909 50.434-55.996 40.018-133.644 57.415-199.682 12.468a98.74 98.74 0 0 0-15.007-19.897 54.13 54.13 0 0 0-10.265-12.468c6.794 0 12.617-1.083 17.358-2.501a22.958 22.958 0 0 0 11.722-12.469c4.032-9.967 0-26.02-12.879-43.415-12.879-17.434-34.755-37.144-66.747-56.78-23.518-14.895-36.808-32.478-42.93-52.114-6.16-19.934-5.339-40.504-.56-61.409 9.146-39.944 32.59-78.767 47.559-103.144 3.994-2.427 1.381 5.04-15.231 36.36-14.783 28.035-42.594 93.214-4.554 143.872a303.274 303.274 0 0 1 24.153-107.363c21.054-47.709 65.067-130.807 68.539-196.658 1.791 1.344 8.1 5.04 10.788 7.54 8.138 4.966 14.186 12.432 22.025 17.36 7.877 7.503 17.807 12.505 32.702 12.505 1.456.112 2.8.224 4.144.224 15.343 0 27.214-5.002 37.181-10.004 10.826-5.002 19.45-12.469 27.625-14.932h.186c17.434-5.04 31.209-15.007 39.01-26.132m81.605 334.408c1.38 22.436 12.804 46.477 32.925 51.404 21.95 5.003 53.532-12.43 66.86-28.558l7.876-.336c11.76-.298 21.54.374 31.62 9.968l.111.112c7.765 7.429 11.386 19.822 14.597 32.701 3.173 14.97 5.749 29.118 15.268 39.795 18.143 19.673 24.078 33.821 23.742 42.557l.112-.224v.672l-.112-.448c-.56 9.78-6.906 14.783-18.59 22.212-23.519 14.97-65.18 26.579-91.722 58.609-23.07 27.512-51.18 42.52-76.005 44.46-24.788 1.98-46.178-7.466-58.759-33.522l-.186-.112c-7.84-14.97-4.48-38.264 2.09-63.09 6.57-24.936 15.978-50.209 17.284-70.853 1.382-26.654 2.837-49.836 7.28-67.718 4.48-17.358 11.498-29.752 23.929-36.733l1.68-.821zm-403.731 1.83h.373c1.978 0 3.92.186 5.86.522 14.037 2.053 26.356 12.431 38.19 28.073l33.971 62.118.112.112c9.071 19.897 28.147 39.72 44.386 61.147 16.202 22.324 28.745 42.221 27.214 58.61v.224c-2.128 27.774-17.881 42.855-41.997 48.305-24.078 5.04-56.742.075-89.407-17.321-36.136-20.01-79.066-17.508-106.653-22.473-13.775-2.464-22.81-7.504-26.99-14.97-4.144-7.428-4.219-22.435 4.591-45.916v-.112l.075-.112c4.368-12.469 1.12-28.11-1.008-41.773-2.053-14.97-3.099-26.468 1.605-35.091 5.973-12.469 14.783-14.895 25.721-19.897 11.013-5.04 23.929-7.541 34.195-17.509h.075v-.111c9.556-10.005 16.612-22.436 24.936-31.284 7.093-7.503 14.186-12.543 24.75-12.543m267.25-338.74c-16.24 7.504-35.278 19.973-55.548 19.973-20.233 0-36.211-9.967-47.746-17.396-5.786-5.003-10.453-10.005-13.962-12.506-6.122-5.002-5.375-12.468-2.762-12.468 4.069.597 4.815 5.04 7.429 7.503 3.583 2.464 8.026 7.429 13.476 12.431 10.863 7.466 25.385 17.434 43.527 17.434 18.106 0 39.31-9.968 52.189-17.397 7.28-5.04 16.612-12.468 24.19-17.433 5.824-5.114 5.562-10.005 10.415-10.005 4.816.598 1.27 5.003-5.487 12.432a302.304 302.304 0 0 1-25.759 17.47v-.037zm-40.392-59.13v-.822c-.224-.71.485-1.568 1.083-1.867 2.762-1.605 6.72-1.008 9.706.15 2.351 0 5.972 2.5 5.6 5.04-.225 1.829-3.174 2.463-5.04 2.463-2.054 0-3.435-1.605-5.264-2.538-1.941-.672-5.45-.299-6.085-2.427m-20.57 0c-.746 2.164-4.218 1.828-6.196 2.463-1.755.933-3.21 2.538-5.189 2.538-1.904 0-4.89-.709-5.114-2.538-.336-2.464 3.285-4.965 5.6-4.965 3.023-1.157 6.868-1.755 9.668-.187.71.336 1.344 1.12 1.12 1.867v.784h.112z\",\"transform\":\"translate(142.938 64)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLoading3Quarters (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLoading (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLogin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"defs\",\"attr\":{},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 0 1 520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 0 1 270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 0 1 0 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineLogout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 0 1-112.7 75.9A352.8 352.8 0 0 1 512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 0 1-112.7-75.9 353.28 353.28 0 0 1-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMacCommand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683819749\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M370.8 554.4c-54.6 0-98.8 44.2-98.8 98.8s44.2 98.8 98.8 98.8 98.8-44.2 98.8-98.8v-42.4h84.7v42.4c0 54.6 44.2 98.8 98.8 98.8s98.8-44.2 98.8-98.8-44.2-98.8-98.8-98.8h-42.4v-84.7h42.4c54.6 0 98.8-44.2 98.8-98.8 0-54.6-44.2-98.8-98.8-98.8s-98.8 44.2-98.8 98.8v42.4h-84.7v-42.4c0-54.6-44.2-98.8-98.8-98.8S272 316.2 272 370.8s44.2 98.8 98.8 98.8h42.4v84.7h-42.4z m42.4 98.8c0 23.4-19 42.4-42.4 42.4s-42.4-19-42.4-42.4 19-42.4 42.4-42.4h42.4v42.4z m197.6-282.4c0-23.4 19-42.4 42.4-42.4s42.4 19 42.4 42.4-19 42.4-42.4 42.4h-42.4v-42.4z m0 240h42.4c23.4 0 42.4 19 42.4 42.4s-19 42.4-42.4 42.4-42.4-19-42.4-42.4v-42.4zM469.6 469.6h84.7v84.7h-84.7v-84.7z m-98.8-56.4c-23.4 0-42.4-19-42.4-42.4s19-42.4 42.4-42.4 42.4 19 42.4 42.4v42.4h-42.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M874 120H622c-3.3 0-6 2.7-6 6v56c0 3.3 2.7 6 6 6h160.4L583.1 387.3c-50-38.5-111-59.3-175.1-59.3-76.9 0-149.3 30-203.6 84.4S120 539.1 120 616s30 149.3 84.4 203.6C258.7 874 331.1 904 408 904s149.3-30 203.6-84.4C666 765.3 696 692.9 696 616c0-64.1-20.8-124.9-59.2-174.9L836 241.9V402c0 3.3 2.7 6 6 6h56c3.3 0 6-2.7 6-6V150c0-16.5-13.5-30-30-30zM408 828c-116.9 0-212-95.1-212-212s95.1-212 212-212 212 95.1 212 212-95.1 212-212 212z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMedicineBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840zM652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMediumWorkmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M517.2 590.55c0 3.55 0 4.36 2.4 6.55l13.43 13.25v.57h-59.57v-25.47a41.44 41.44 0 0 1-39.5 27.65c-30.61 0-52.84-24.25-52.84-68.87 0-41.8 23.99-69.69 57.65-69.69a35.15 35.15 0 0 1 34.61 21.67v-56.19a6.99 6.99 0 0 0-2.71-6.79l-12.8-12.45v-.56l59.33-7.04v177.37zm-43.74-8.09v-83.83a22.2 22.2 0 0 0-17.74-8.4c-14.48 0-28.47 13.25-28.47 52.62 0 36.86 12.07 49.88 27.1 49.88a23.91 23.91 0 0 0 19.11-10.27zm83.23 28.46V497.74a7.65 7.65 0 0 0-2.4-6.79l-13.19-13.74v-.57h59.56v114.8c0 3.55 0 4.36 2.4 6.54l13.12 12.45v.57l-59.49-.08zm-2.16-175.67c0-13.4 10.74-24.25 23.99-24.25 13.25 0 23.98 10.86 23.98 24.25 0 13.4-10.73 24.25-23.98 24.25s-23.99-10.85-23.99-24.25zm206.83 155.06c0 3.55 0 4.6 2.4 6.79l13.43 13.25v.57h-59.88V581.9a43.4 43.4 0 0 1-41.01 31.2c-26.55 0-40.78-19.56-40.78-56.59 0-17.86 0-37.43.56-59.41a6.91 6.91 0 0 0-2.4-6.55L620.5 477.2v-.57h59.09v73.81c0 24.25 3.51 40.42 18.54 40.42a23.96 23.96 0 0 0 19.35-12.2v-80.85a7.65 7.65 0 0 0-2.4-6.79l-13.27-13.82v-.57h59.56V590.3zm202.76 20.6c0-4.36.8-59.97.8-72.75 0-24.25-3.76-40.98-20.63-40.98a26.7 26.7 0 0 0-21.19 11.64 99.68 99.68 0 0 1 2.4 23.04c0 16.81-.56 38.23-.8 59.66a6.91 6.91 0 0 0 2.4 6.55l13.43 12.45v.56h-60.12c0-4.04.8-59.98.8-72.76 0-24.65-3.76-40.98-20.39-40.98-8.2.3-15.68 4.8-19.83 11.96v82.46c0 3.56 0 4.37 2.4 6.55l13.11 12.45v.56h-59.48V498.15a7.65 7.65 0 0 0-2.4-6.8l-13.19-14.14v-.57H841v28.78c5.53-19 23.13-31.76 42.7-30.96 19.82 0 33.26 11.16 38.93 32.34a46.41 46.41 0 0 1 44.77-32.34c26.55 0 41.58 19.8 41.58 57.23 0 17.87-.56 38.24-.8 59.66a6.5 6.5 0 0 0 2.72 6.55l13.11 12.45v.57h-59.88zM215.87 593.3l17.66 17.05v.57h-89.62v-.57l17.99-17.05a6.91 6.91 0 0 0 2.4-6.55V477.69c0-4.6 0-10.83.8-16.16L104.66 613.1h-.72l-62.6-139.45c-1.37-3.47-1.77-3.72-2.65-6.06v91.43a32.08 32.08 0 0 0 2.96 17.87l25.19 33.46v.57H0v-.57l25.18-33.55a32.16 32.16 0 0 0 2.96-17.78V457.97A19.71 19.71 0 0 0 24 444.15L6.16 420.78v-.56h63.96l53.56 118.1 47.17-118.1h62.6v.56l-17.58 19.8a6.99 6.99 0 0 0-2.72 6.8v139.37a6.5 6.5 0 0 0 2.72 6.55zm70.11-54.65v.56c0 34.6 17.67 48.5 38.38 48.5a43.5 43.5 0 0 0 40.77-24.97h.56c-7.2 34.2-28.14 50.36-59.48 50.36-33.82 0-65.72-20.61-65.72-68.39 0-50.2 31.98-70.25 67.32-70.25 28.46 0 58.76 13.58 58.76 57.24v6.95h-80.59zm0-6.95h39.42v-7.04c0-35.57-7.28-45.03-18.23-45.03-13.27 0-21.35 14.15-21.35 52.07h.16z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMedium (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M834.7 279.8l61.3-58.9V208H683.7L532.4 586.4 360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMeh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMenuFold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMenuUnfold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMergeCells (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683404098\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M482.2 508.4L331.3 389c-3-2.4-7.3-0.2-7.3 3.6V478H184V184h204v128c0 2.2 1.8 4 4 4h60c2.2 0 4-1.8 4-4V144c0-15.5-12.5-28-28-28H144c-15.5 0-28 12.5-28 28v736c0 15.5 12.5 28 28 28h284c15.5 0 28-12.5 28-28V712c0-2.2-1.8-4-4-4h-60c-2.2 0-4 1.8-4 4v128H184V546h140v85.4c0 3.8 4.4 6 7.3 3.6l150.9-119.4c2.4-1.8 2.4-5.4 0-7.2zM880 116H596c-15.5 0-28 12.5-28 28v168c0 2.2 1.8 4 4 4h60c2.2 0 4-1.8 4-4V184h204v294H700v-85.4c0-3.8-4.3-6-7.3-3.6l-151 119.4c-2.3 1.8-2.3 5.3 0 7.1l151 119.5c2.9 2.3 7.3 0.2 7.3-3.6V546h140v294H636V712c0-2.2-1.8-4-4-4h-60c-2.2 0-4 1.8-4 4v168c0 15.5 12.5 28 28 28h284c15.5 0 28-12.5 28-28V144c0-15.5-12.5-28-28-28z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMerge (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"transform\":\"matrix(1 0 0 -1 172 924)\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M76 172H148V660H76z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M568 61c61.856 0 112 50.144 112 112 0 48.327-30.608 89.505-73.496 105.206l-.018 113.037c-.003 21.932-14.1 41.379-34.944 48.204L136.643 581.85l-22.405-68.425 420.25-137.608.014-95.914C489.009 265.664 456 223.187 456 173c0-61.856 50.144-112 112-112M112 0c61.856 0 112 50.144 112 112s-50.144 112-112 112S0 173.856 0 112 50.144 0 112 0m456 125c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48M112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48m0 536c61.856 0 112 50.144 112 112s-50.144 112-112 112S0 773.856 0 712s50.144-112 112-112m0 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm200 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMinusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMinusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMobile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zm-8 824H288V134h448v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMoneyCollect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM512 837.5l-256-93.1V184h512v560.4l-256 93.1zM660.6 312h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMonitor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M692.8 412.7l.2-.2-34.6-44.3a7.97 7.97 0 0 0-11.2-1.4l-50.4 39.3-70.5-90.1a7.97 7.97 0 0 0-11.2-1.4l-37.9 29.7a7.97 7.97 0 0 0-1.4 11.2l70.5 90.2-.2.1 34.6 44.3c2.7 3.5 7.7 4.1 11.2 1.4l50.4-39.3 64.1 82c2.7 3.5 7.7 4.1 11.2 1.4l37.9-29.6c3.5-2.7 4.1-7.7 1.4-11.2l-64.1-82.1zM608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMoon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M489.493 111.658c30.658-1.792 45.991 36.44 22.59 56.329C457.831 214.095 426 281.423 426 354c0 134.757 109.243 244 244 244 72.577 0 139.905-31.832 186.014-86.084 19.868-23.377 58.064-8.102 56.332 22.53C900.4 745.823 725.141 912 512.5 912 291.31 912 112 732.69 112 511.5c0-211.39 164.287-386.024 374.198-399.649l.206-.013zm-81.143 79.75-4.112 1.362C271.1 237.943 176 364.092 176 511.5 176 697.344 326.656 848 512.5 848c148.28 0 274.938-96.192 319.453-230.41l.625-1.934-.11.071c-47.18 29.331-102.126 45.755-159.723 46.26L670 662c-170.104 0-308-137.896-308-308 0-58.595 16.476-114.54 46.273-162.467z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M456 231a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineMuted (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M771.915 115c-5.863 0-11.877 1.644-17.42 5.267L400 351.966H236c-8.837 0-16 7.165-16 16.003V656.03c0 8.838 7.163 16.003 16 16.003h164l354.495 231.7c5.542 3.621 11.558 5.267 17.42 5.267C788.566 909 804 895.749 804 876.94V147.06c0-18.808-15.436-32.06-32.085-32.06M732 220.997v582.005L439.386 611.75l-17.948-11.73H292V423.98h129.438l17.948-11.73z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineNodeCollapse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683371420\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 612c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H298c-14.2-35.2-48.7-60-89-60-53 0-96 43-96 96s43 96 96 96c40.3 0 74.8-24.8 89-60h150.3v152c0 55.2 44.8 100 100 100H952c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H548.3c-15.5 0-28-12.5-28-28V612H952zM451.7 313.7l172.5 136.2c6.3 5.1 15.8 0.5 15.8-7.7V344h264c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H640v-98.2c0-8.1-9.4-12.8-15.8-7.7L451.7 298.3c-4.9 3.9-4.9 11.5 0 15.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineNodeExpand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683374330\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 612c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H298c-14.2-35.2-48.7-60-89-60-53 0-96 43-96 96s43 96 96 96c40.3 0 74.8-24.8 89-60h150.3v152c0 55.2 44.8 100 100 100H952c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H548.3c-15.5 0-28-12.5-28-28V612H952zM456 344h264v98.2c0 8.1 9.5 12.8 15.8 7.7l172.5-136.2c5-3.9 5-11.4 0-15.3L735.8 162.1c-6.4-5.1-15.8-0.5-15.8 7.7V268H456c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineNodeIndex (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683635191\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M843.5 737.4c-12.4-75.2-79.2-129.1-155.3-125.4S550.9 676 546 752c-153.5-4.8-208-40.7-199.1-113.7 3.3-27.3 19.8-41.9 50.1-49 18.4-4.3 38.8-4.9 57.3-3.2 1.7 0.2 3.5 0.3 5.2 0.5 11.3 2.7 22.8 5 34.3 6.8 34.1 5.6 68.8 8.4 101.8 6.6 92.8-5 156-45.9 159.2-132.7 3.1-84.1-54.7-143.7-147.9-183.6-29.9-12.8-61.6-22.7-93.3-30.2-14.3-3.4-26.3-5.7-35.2-7.2-7.9-75.9-71.5-133.8-147.8-134.4-76.3-0.6-140.9 56.1-150.1 131.9s40 146.3 114.2 163.9c74.2 17.6 149.9-23.3 175.7-95.1 9.4 1.7 18.7 3.6 28 5.8 28.2 6.6 56.4 15.4 82.4 26.6 70.7 30.2 109.3 70.1 107.5 119.9-1.6 44.6-33.6 65.2-96.2 68.6-27.5 1.5-57.6-0.9-87.3-5.8-8.3-1.4-15.9-2.8-22.6-4.3-3.9-0.8-6.6-1.5-7.8-1.8l-3.1-0.6c-2.2-0.3-5.9-0.8-10.7-1.3-25-2.3-52.1-1.5-78.5 4.6-55.2 12.9-93.9 47.2-101.1 105.8-15.7 126.2 78.6 184.7 276 188.9 29.1 70.4 106.4 107.9 179.6 87 73.3-20.9 119.3-93.4 106.9-168.6zM329.1 345.2c-46 0-83.3-37.3-83.3-83.3s37.3-83.3 83.3-83.3 83.3 37.3 83.3 83.3-37.3 83.3-83.3 83.3zM695.6 845c-46 0-83.3-37.3-83.3-83.3s37.3-83.3 83.3-83.3 83.3 37.3 83.3 83.3-37.3 83.3-83.3 83.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineNotification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineNumber (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 394c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H400V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v236H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h228v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h164c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V394h164zM628 630H400V394h228v236z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineOneToOne (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683653709\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M316 672h60c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8zM512 622c22.1 0 40-17.9 40-39 0-23.1-17.9-41-40-41s-40 17.9-40 41c0 21.1 17.9 39 40 39zM512 482c22.1 0 40-17.9 40-39 0-23.1-17.9-41-40-41s-40 17.9-40 41c0 21.1 17.9 39 40 39z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32z m-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M648 672h60c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineOpenAI (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M358.878 0c-84.345 0-156.575 52.808-185.68 126.983-60.887 8.128-115.29 43.622-146.595 97.837C-15.56 297.814-5.953 386.702 43.74 448.978 20.36 505.726 23.887 570.575 55.164 624.76c42.18 73.024 124.095 109.152 202.937 97.235C295.585 770.621 353.51 800 416.121 800c84.346 0 156.576-52.808 185.68-126.983 60.888-8.128 115.291-43.622 146.596-97.837 42.163-72.994 32.556-161.882-17.137-224.158 23.38-56.748 19.853-121.597-11.424-175.782-42.18-73.024-124.095-109.152-202.937-97.235C479.415 29.379 421.49 0 358.879 0m0 61.538c35.593 0 68.972 13.99 94.223 37.74-1.928 1.031-3.925 1.845-5.832 2.946L310.594 181.13c-14.223 8.184-23.028 23.353-23.09 39.783l-.841 183.594-65.722-38.341V199.399c0-76 61.895-137.86 137.937-137.86m197.706 75.902c44.186 3.142 86.154 27.435 109.917 68.57 17.794 30.797 22.38 66.692 14.43 100.42-1.879-1.169-3.6-2.491-5.531-3.605l-136.734-78.907a46.232 46.232 0 0 0-46-.06l-159.463 91.106.36-76.022 144.492-83.413c24.694-14.25 52.017-19.974 78.53-18.09M159.67 192.849c-.071 2.19-.3 4.343-.3 6.55v157.752a46.185 46.185 0 0 0 22.91 39.904l158.68 92.488-66.021 37.68-144.552-83.353c-65.852-38-88.47-122.526-50.448-188.341 17.783-30.78 46.556-52.689 79.731-62.68m340.393 79.927 144.552 83.354c65.852 38 88.47 122.526 50.448 188.341-17.783 30.78-46.556 52.689-79.731 62.68.071-2.19.3-4.343.3-6.55V442.849a46.185 46.185 0 0 0-22.91-39.904l-158.68-92.488zM387.801 336.84l54.537 31.79-.3 63.222-54.839 31.31-54.537-31.85.3-63.162zm100.536 58.654 65.722 38.341v166.767c0 76-61.895 137.86-137.937 137.86-35.593 0-68.972-13.988-94.223-37.74 1.928-1.03 3.925-1.844 5.832-2.945l136.675-78.906c14.223-8.184 23.028-23.353 23.09-39.783zm-46.54 89.543-.36 76.022-144.492 83.413c-65.852 38-150.425 15.335-188.446-50.48-17.794-30.798-22.38-66.693-14.43-100.421 1.879 1.169 3.6 2.491 5.531 3.605l136.735 78.907a46.232 46.232 0 0 0 45.999.06z\",\"transform\":\"translate(124 128)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineOrderedList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M920 760H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-568H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM216 712H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h72.4v20.5h-35.7c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h35.7V838H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4V716c0-2.2-1.8-4-4-4zM100 188h38v120c0 2.2 1.8 4 4 4h40c2.2 0 4-1.8 4-4V152c0-4.4-3.6-8-8-8h-78c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4zm116 240H100c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4h68.4l-70.3 77.7a8.3 8.3 0 0 0-2.1 5.4V592c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4v-36c0-2.2-1.8-4-4-4h-68.4l70.3-77.7a8.3 8.3 0 0 0 2.1-5.4V432c0-2.2-1.8-4-4-4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePaperClip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 0 0 174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePartition (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683632175\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M640.6 429.8h257.1c7.9 0 14.3-6.4 14.3-14.3V158.3c0-7.9-6.4-14.3-14.3-14.3H640.6c-7.9 0-14.3 6.4-14.3 14.3v92.9H490.6c-3.9 0-7.1 3.2-7.1 7.1v221.5h-85.7v-96.5c0-7.9-6.4-14.3-14.3-14.3H126.3c-7.9 0-14.3 6.4-14.3 14.3v257.2c0 7.9 6.4 14.3 14.3 14.3h257.1c7.9 0 14.3-6.4 14.3-14.3V544h85.7v221.5c0 3.9 3.2 7.1 7.1 7.1h135.7v92.9c0 7.9 6.4 14.3 14.3 14.3h257.1c7.9 0 14.3-6.4 14.3-14.3v-257c0-7.9-6.4-14.3-14.3-14.3h-257c-7.9 0-14.3 6.4-14.3 14.3v100h-78.6v-393h78.6v100c0 7.9 6.4 14.3 14.3 14.3z m53.5-217.9h150V362h-150V211.9zM329.9 587h-150V437h150v150z m364.2 75.1h150v150.1h-150V662.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePauseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePause (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 176h80v672h-80zm408 0h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm159.6-585h-59.5c-3 0-5.8 1.7-7.1 4.4l-90.6 180H511l-90.6-180a8 8 0 0 0-7.1-4.4h-60.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9L457 515.7h-61.4c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V603h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V717c0 4.4 3.6 8 8 8h54.3c4.4 0 8-3.6 8-8v-68.1h82c4.4 0 8-3.6 8-8V611c0-4.4-3.6-8-8-8h-82v-41.5h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-62l111.1-204.8c.6-1.2 1-2.5 1-3.8-.1-4.4-3.7-8-8.1-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePercentage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M855.7 210.8l-42.4-42.4a8.03 8.03 0 0 0-11.3 0L168.3 801.9a8.03 8.03 0 0 0 0 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePicCenter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM848 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h672zM232 436h560v152H232V436z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePicLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM608 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM152 436h400v152H152V436zm552 210c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePicRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-24 500c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM472 436h400v152H472V436zM80 646c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePicture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552a398.46 398.46 0 0 0 117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952a398.46 398.46 0 0 0 282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePinterest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448 0C200.807 0 0 200.807 0 448s200.807 448 448 448 448-200.807 448-448S695.193 0 448 0m0 38.957c226.14 0 409.043 182.904 409.043 409.043 0 226.14-182.904 409.043-409.043 409.043-41.365 0-81.269-6.19-118.886-17.576 16.756-28.014 38.39-68.058 46.984-101.12 5.106-19.601 26.098-99.559 26.098-99.559 13.642 26.045 53.503 48.087 95.945 48.087 126.295 0 217.343-116.149 217.343-260.484 0-138.375-112.916-241.88-258.201-241.88-180.753 0-276.69 121.314-276.69 253.407 0 61.433 32.673 137.902 84.989 162.256 7.924 3.688 12.18 2.09 14-5.592 1.4-5.831 8.468-34.255 11.64-47.479 1.016-4.22.524-7.866-2.89-12.021-17.316-21.004-31.196-59.583-31.196-95.566 0-92.374 69.932-181.771 189.076-181.771 102.875 0 174.924 70.13 174.924 170.396 0 113.281-57.2 191.777-131.63 191.777-41.106 0-71.885-34.005-62.011-75.706 11.838-49.77 34.695-103.478 34.695-139.43 0-32.149-17.253-58.967-52.994-58.967-42.024 0-75.783 43.447-75.783 101.69 0 37.063 12.554 62.163 12.554 62.163s-41.511 175.51-49.114 208.174c-7.619 32.642-5.578 76.605-2.435 109.337C144.551 766.518 38.957 619.785 38.957 448 38.957 221.86 221.86 38.957 448 38.957\",\"transform\":\"translate(64 64)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePlayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M719.4 499.1l-296.1-215A15.9 15.9 0 0 0 398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 0 0 0-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePlaySquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M442.3 677.6l199.4-156.7a11.3 11.3 0 0 0 0-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePlusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8Z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePoundCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePoweroff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePrinter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineProduct (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M320 30.02c8.837 0 16 7.163 16 16v304c0 8.836-7.163 16-16 16H16c-8.837 0-16-7.164-16-16v-304c0-8.837 7.163-16 16-16zm-52 68H68v200h200zm493.333 87.686c6.248 6.248 6.248 16.379 0 22.627l-181.02 181.02c-6.248 6.248-16.378 6.248-22.627 0l-181.019-181.02c-6.248-6.248-6.248-16.379 0-22.627l181.02-181.02c6.248-6.248 16.378-6.248 22.627 0zm-84.853 11.313L569 89.54 461.52 197.02 569 304.5zM320 430.02c8.837 0 16 7.164 16 16v304c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16v-304c0-8.836 7.163-16 16-16zm-52 68H68v200h200zm452-68c8.837 0 16 7.164 16 16v304c0 8.837-7.163 16-16 16H416c-8.837 0-16-7.163-16-16v-304c0-8.836 7.163-16 16-16zm-52 68H468v200h200z\",\"transform\":\"translate(144 113.98)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineProfile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM340 368a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineProject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePropertySafety (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM430.5 318h-46c-1.7 0-3.3.4-4.8 1.2a10.1 10.1 0 0 0-4 13.6l88 161.1h-45.2c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1a10.05 10.05 0 0 0-8.8-14.8h-45c-3.8 0-7.2 2.1-8.9 5.5l-73.2 144.3-72.9-144.3c-1.7-3.4-5.2-5.5-9-5.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePullRequest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePushpin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlinePython (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M443 678.5c0 15.74 12.76 28.5 28.5 28.5s28.5-12.76 28.5-28.5-12.76-28.5-28.5-28.5-28.5 12.76-28.5 28.5M300 121.5c0 15.74 12.76 28.5 28.5 28.5s28.5-12.76 28.5-28.5S344.24 93 328.5 93 300 105.76 300 121.5\",\"transform\":\"translate(112 112)\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M709.524 185.714h-95.238V90.476C614.286 40.571 573.714 0 523.81 0H276.19c-49.904 0-90.476 40.571-90.476 90.476v95.238H90.476C40.571 185.714 0 226.286 0 276.19v247.62c0 49.904 40.571 90.476 90.476 90.476h95.238v95.238c0 49.905 40.572 90.476 90.476 90.476h247.62c49.904 0 90.476-40.571 90.476-90.476v-95.238h95.238c49.905 0 90.476-40.572 90.476-90.476V276.19c0-49.904-40.571-90.476-90.476-90.476M90.476 557.143c-18.38 0-33.333-14.953-33.333-33.333V276.19c0-18.38 14.952-33.333 33.333-33.333h278.572c15.81 0 28.571-12.762 28.571-28.571 0-15.81-12.762-28.572-28.571-28.572h-126.19V90.476c0-18.38 14.952-33.333 33.332-33.333h247.62c18.38 0 33.333 14.952 33.333 33.333v256.476c0 13.524-10.953 24.477-24.476 24.477H267.333c-45.047 0-81.619 36.666-81.619 81.619v104.095zm652.381-33.333c0 18.38-14.952 33.333-33.333 33.333H430.952c-15.81 0-28.571 12.762-28.571 28.571 0 15.81 12.762 28.572 28.571 28.572h126.19v95.238c0 18.38-14.952 33.333-33.332 33.333H276.19c-18.38 0-33.333-14.952-33.333-33.333V453.048c0-13.524 10.953-24.477 24.476-24.477h265.334c45.047 0 81.619-36.666 81.619-81.619V242.857h95.238c18.38 0 33.333 14.953 33.333 33.333z\",\"transform\":\"translate(112 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineQq (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineQrcode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M468 128H160c-17.7 0-32 14.3-32 32v308c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-56 284H192V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210H136c-4.4 0-8 3.6-8 8v308c0 17.7 14.3 32 32 32h308c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zm-56 284H192V612h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm590-630H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V160c0-17.7-14.3-32-32-32zm-32 284H612V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210h-48c-4.4 0-8 3.6-8 8v134h-78V556c0-4.4-3.6-8-8-8H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h78v102c0 4.4 3.6 8 8 8h190c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zM746 832h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm142 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineQuestionCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineQuestion (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2-27.2 31.7-65.6 54.4-108.1 64-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9 58.4-13.2 111.4-44.7 149.3-88.7 19.1-22.3 34-47.1 44.3-74 10.7-27.9 16.1-57.2 16.1-87 0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadarChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M926.8 397.1l-396-288a31.81 31.81 0 0 0-37.6 0l-396 288a31.99 31.99 0 0 0-11.6 35.8l151.3 466a32 32 0 0 0 30.4 22.1h489.5c13.9 0 26.1-8.9 30.4-22.1l151.3-466c4.2-13.2-.5-27.6-11.7-35.8zM838.6 417l-98.5 32-200-144.7V199.9L838.6 417zM466 567.2l-89.1 122.3-55.2-169.2L466 567.2zm-116.3-96.8L484 373.3v140.8l-134.3-43.7zM512 599.2l93.9 128.9H418.1L512 599.2zm28.1-225.9l134.2 97.1L540.1 514V373.3zM558 567.2l144.3-46.9-55.2 169.2L558 567.2zm-74-367.3v104.4L283.9 449l-98.5-32L484 199.9zM169.3 470.8l86.5 28.1 80.4 246.4-53.8 73.9-113.1-348.4zM327.1 853l50.3-69h269.3l50.3 69H327.1zm414.5-33.8l-53.8-73.9 80.4-246.4 86.5-28.1-113.1 348.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadiusBottomleft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadiusBottomright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadiusSetting (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M396 140h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-44 684h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm524-204h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 344h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm320 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm160 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm140-284c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V370c0-127-103-230-230-230H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h170c87.3 0 158 70.7 158 158v170zM236 96H92c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2zM920 780H776c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V788c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadiusUpleft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRadiusUpright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRead (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineReconciliation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zm204-523H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552zM704 408v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zM592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRedEnvelope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142zM832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineReddit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M288 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm338.7 119.7c-23.1 18.2-68.9 37.8-114.7 37.8s-91.6-19.6-114.7-37.8c-14.4-11.3-35.3-8.9-46.7 5.5s-8.9 35.3 5.5 46.7C396.3 771.6 457.5 792 512 792s115.7-20.4 155.9-52.1a33.25 33.25 0 1 0-41.2-52.2zM960 456c0-61.9-50.1-112-112-112-42.1 0-78.7 23.2-97.9 57.6-57.6-31.5-127.7-51.8-204.1-56.5L612.9 195l127.9 36.9c11.5 32.6 42.6 56.1 79.2 56.1 46.4 0 84-37.6 84-84s-37.6-84-84-84c-32 0-59.8 17.9-74 44.2L603.5 123a33.2 33.2 0 0 0-39.6 18.4l-90.8 203.9c-74.5 5.2-142.9 25.4-199.2 56.2A111.94 111.94 0 0 0 176 344c-61.9 0-112 50.1-112 112 0 45.8 27.5 85.1 66.8 102.5-7.1 21-10.8 43-10.8 65.5 0 154.6 175.5 280 392 280s392-125.4 392-280c0-22.6-3.8-44.5-10.8-65.5C932.5 541.1 960 501.8 960 456zM820 172.5a31.5 31.5 0 1 1 0 63 31.5 31.5 0 0 1 0-63zM120 456c0-30.9 25.1-56 56-56a56 56 0 0 1 50.6 32.1c-29.3 22.2-53.5 47.8-71.5 75.9a56.23 56.23 0 0 1-35.1-52zm392 381.5c-179.8 0-325.5-95.6-325.5-213.5S332.2 410.5 512 410.5 837.5 506.1 837.5 624 691.8 837.5 512 837.5zM868.8 508c-17.9-28.1-42.2-53.7-71.5-75.9 9-18.9 28.3-32.1 50.6-32.1 30.9 0 56 25.1 56 56 .1 23.5-14.5 43.7-35.1 52zM624 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRedo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 0 0-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineReload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 0 1 655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 0 1 279 755.2a342.16 342.16 0 0 1-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 0 1 109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"defs\",\"attr\":{},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRetweet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0 0 11.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 0 0-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 0 0-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M666.7 505.5l-246-178A8 8 0 0 0 408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M412.7 696.5l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5V381c0 10.2 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRise (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M917 211.1l-199.2 24c-6.6.8-9.4 8.9-4.7 13.6l59.3 59.3-226 226-101.8-101.7c-6.3-6.3-16.4-6.2-22.6 0L100.3 754.1a8.03 8.03 0 0 0 0 11.3l45 45.2c3.1 3.1 8.2 3.1 11.3 0L433.3 534 535 635.7c6.3 6.2 16.4 6.2 22.6 0L829 364.5l59.3 59.3a8.01 8.01 0 0 0 13.6-4.7l24-199.2c.7-5.1-3.7-9.5-8.9-8.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRobot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M300 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0 1 62.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRollback (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 0 0 0 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRotateLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683455503\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32z m-44 402H188V494h440v326z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-0.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7 0.4 12.6-6.1v-63.9c12.9 0.1 25.9 0.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8 11 40.7 14 82.7 8.9 124.8-0.7 5.4-1.4 10.8-2.4 16.1h74.9c14.8-103.6-11.3-213-81-302.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRotateRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683458761\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-0.4-12.6 6.1l-0.2 64c-118.6 0.5-235.8 53.4-314.6 154.2-69.6 89.2-95.7 198.6-81.1 302.4h74.9c-0.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32z m-44 402H396V494h440v326z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineRuby (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M397.815.02c-.735.049-1.469.12-2.2.213h-4.328l-3.406 1.703a36.334 36.334 0 0 0-8.87 4.4l-145.96 73.013L79.356 233.041 6.696 378.288a36.333 36.333 0 0 0-4.897 9.863l-1.561 3.122v3.974a36.332 36.332 0 0 0 0 8.302v298.229l6.883 9.508c5.975 8.28 12.713 16.544 20.578 24.41 37.856 37.854 87.664 57.169 142.625 62.015a36.335 36.335 0 0 0 11.566 1.774h575.753c3.14.534 6.337.654 9.508.355a36.335 36.335 0 0 0 2.554-.355h29.803V769.54a36.332 36.332 0 0 0 0-11.92V181.88a36.332 36.332 0 0 0-1.774-11.566c-4.848-54.956-24.165-104.757-62.017-142.622h-.071v-.07c-7.85-7.807-16.071-14.49-24.268-20.436l-9.58-6.954H403.138a36.335 36.335 0 0 0-5.322-.213m133.188 72.872h145.96c2.467 2.081 5.248 4.054 7.451 6.245 26.585 26.63 40.964 64.743 42.291 111.188zm-132.691 5.11 65.707 39.38-25.474 156.104-64.359 64.357-100.69 100.687-156.107 25.473-39.381-65.705 61.095-122.258L276.05 139.095zm132.762 79.612 123.183 73.937-138.084 17.242zm178.814 140.21c-21.21 68.248-62.66 142.573-122.402 211.875l-65.85-188.389zm-252.54 59.603 53.645 153.55-153.553-53.643 68.12-68.119zm269.499 81.032v236.994L626.44 575.05c40.102-43.738 73.727-89.827 100.406-136.59m-478.044 77.697-17.242 138.081-73.938-123.18zm72.52 5.464 188.322 65.847c-69.283 59.712-143.574 101.195-211.81 122.4zm-248.424 9.366 117.435 195.698c-46.5-1.327-84.636-15.736-111.262-42.361-2.161-2.162-4.113-4.939-6.173-7.38zm502.169 95.436 100.405 100.404h-237c46.768-26.68 92.86-60.308 136.595-100.404\",\"transform\":\"translate(112 112)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSafetyCertificate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSafety (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64L128 192v384c0 212.1 171.9 384 384 384s384-171.9 384-384V192L512 64zm312 512c0 172.3-139.7 312-312 312S200 748.3 200 576V246l312-110 312 110v330z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M378.4 475.1a35.91 35.91 0 0 0-50.9 0 35.91 35.91 0 0 0 0 50.9l129.4 129.4 2.1 2.1a33.98 33.98 0 0 0 48.1 0L730.6 434a33.98 33.98 0 0 0 0-48.1l-2.8-2.8a33.98 33.98 0 0 0-48.1 0L483 579.7 378.4 475.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M136 384h56c4.4 0 8-3.6 8-8V200h176c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-37.6 0-68 30.4-68 68v180c0 4.4 3.6 8 8 8zm512-184h176v176c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V196c0-37.6-30.4-68-68-68H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM376 824H200V648c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v180c0 37.6 30.4 68 68 68h180c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm512-184h-56c-4.4 0-8 3.6-8 8v176H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h180c37.6 0 68-30.4 68-68V648c0-4.4-3.6-8-8-8zm16-164H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSchedule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 136H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm308.2-177.4L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineScissor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M567.1 512l318.5-319.3c5-5 1.5-13.7-5.6-13.7h-90.5c-2.1 0-4.2.8-5.6 2.3l-273.3 274-90.2-90.5c12.5-22.1 19.7-47.6 19.7-74.8 0-83.9-68.1-152-152-152s-152 68.1-152 152 68.1 152 152 152c27.7 0 53.6-7.4 75.9-20.3l90 90.3-90.1 90.3A151.04 151.04 0 0 0 288 582c-83.9 0-152 68.1-152 152s68.1 152 152 152 152-68.1 152-152c0-27.2-7.2-52.7-19.7-74.8l90.2-90.5 273.3 274c1.5 1.5 3.5 2.3 5.6 2.3H880c7.1 0 10.7-8.6 5.6-13.7L567.1 512zM288 370c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm0 444c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSecurityScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM402.9 528.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.7 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 123-20.1 178.6zm65.4-133.3c31.3-31.3 82-31.3 113.2 0 31.3 31.3 31.3 82 0 113.2-31.3 31.3-82 31.3-113.2 0s-31.3-81.9 0-113.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSelect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 0 0-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSend (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683742680\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M931.4 498.9L94.9 79.5c-3.4-1.7-7.3-2.1-11-1.2-8.5 2.1-13.8 10.7-11.7 19.3l86.2 352.2c1.3 5.3 5.2 9.6 10.4 11.3l147.7 50.7-147.6 50.7c-5.2 1.8-9.1 6-10.3 11.3L72.2 926.5c-0.9 3.7-0.5 7.6 1.2 10.9 3.9 7.9 13.5 11.1 21.5 7.2l836.5-417c3.1-1.5 5.6-4.1 7.2-7.1 3.9-8 0.7-17.6-7.2-21.6zM170.8 826.3l50.3-205.6 295.2-101.3c2.3-0.8 4.2-2.6 5-5 1.4-4.2-0.8-8.7-5-10.2L221.1 403 171 198.2l628 314.9-628.2 313.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSetting (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShake (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M324 666a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm616.7-309.6L667.6 83.2C655.2 70.9 638.7 64 621.1 64s-34.1 6.8-46.5 19.2L83.3 574.5a65.85 65.85 0 0 0 0 93.1l273.2 273.2c12.3 12.3 28.9 19.2 46.5 19.2s34.1-6.8 46.5-19.2l491.3-491.3c25.6-25.7 25.6-67.5-.1-93.1zM403 880.1L143.9 621l477.2-477.2 259 259.2L403 880.1zM152.8 373.7a7.9 7.9 0 0 0 11.2 0L373.7 164a7.9 7.9 0 0 0 0-11.2l-38.4-38.4a7.9 7.9 0 0 0-11.2 0L114.3 323.9a7.9 7.9 0 0 0 0 11.2l38.5 38.6zm718.6 276.6a7.9 7.9 0 0 0-11.2 0L650.3 860.1a7.9 7.9 0 0 0 0 11.2l38.4 38.4a7.9 7.9 0 0 0 11.2 0L909.7 700a7.9 7.9 0 0 0 0-11.2l-38.3-38.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShareAlt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 0 0 0-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShoppingCart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M922.9 701.9H327.4l29.9-60.9 496.8-.9c16.8 0 31.2-12 34.2-28.6l68.8-385.1c1.8-10.1-.9-20.5-7.5-28.4a34.99 34.99 0 0 0-26.6-12.5l-632-2.1-5.4-25.4c-3.4-16.2-18-28-34.6-28H96.5a35.3 35.3 0 1 0 0 70.6h125.9L246 312.8l58.1 281.3-74.8 122.1a34.96 34.96 0 0 0-3 36.8c6 11.9 18.1 19.4 31.5 19.4h62.8a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7h161.1a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7H923c19.4 0 35.3-15.8 35.3-35.3a35.42 35.42 0 0 0-35.4-35.2zM305.7 253l575.8 1.9-56.4 315.8-452.3.8L305.7 253zm96.9 612.7c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6zm325.1 0c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShopping (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineShrink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M881.7 187.4l-45.1-45.1a8.03 8.03 0 0 0-11.3 0L667.8 299.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L576.1 439c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 157.6-157.6c3-3 3-8.1-.1-11.2zM439 576.1l-189.2 23.5c-6.6.8-9.3 8.9-4.7 13.5l54.7 54.7-157.5 157.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l157.6-157.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L447.9 585a7.9 7.9 0 0 0-8.9-8.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSignature (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33.713 640c1.994 0 3.988-.2 5.982-.498l168.19-29.508c1.994-.399 3.888-1.296 5.284-2.792l423.915-423.875a9.927 9.927 0 0 0 0-14.056L470.888 2.891C468.994.997 466.5 0 463.809 0s-5.184.997-7.078 2.891L32.816 426.766c-1.495 1.496-2.393 3.29-2.791 5.284L.514 600.224c-1.894 11.066 1.495 21.932 9.372 29.807 6.58 6.48 14.954 9.969 23.827 9.969m51.743-85.433 15.653-88.922 362.7-362.667 73.278 73.271-362.7 362.667zM486.826 455.928c27.691-14.812 57.293-20.852 85.545-15.519 32.365 6.11 59.72 26.534 78.96 59.406 29.974 51.211 21.642 102.332-18.484 144.254-17.577 18.364-41.07 35.013-69.996 50.297l-.293.152.848.26c13.153 3.956 27.085 6.1 41.54 6.21l1.174.005c61.068 0 100.981-22.104 125.285-67.876 9.325-17.56 31.119-24.237 48.679-14.913 17.56 9.325 24.237 31.119 14.912 48.68-37.285 70.218-102.092 106.109-188.876 106.109-47.687 0-91.94-15.03-128.188-41.368l-1.056-.774-1.36.473c-46.18 15.996-98.732 29.945-155.37 41.932l-2.239.472c-48.571 10.217-97.257 18.377-139.154 23.957-19.709 2.625-37.813-11.224-40.438-30.932-2.625-19.709 11.224-37.813 30.932-40.438 40.196-5.353 87.126-13.22 133.84-23.045 42.799-9.002 83.011-19.134 119.357-30.342l.234-.074-.436-.693c-16.464-26.452-25.857-55.432-26.142-83.24l-.007-1.303c0-49.907 39.555-104.315 90.733-131.69m72.188 55.231c-10.74-2.027-24.099.699-38.228 8.257-29.546 15.804-52.693 47.643-52.693 68.202 0 18.206 8.889 40.146 24.71 59.736l.238.293 1.223-.514c39.17-16.581 68.483-34.271 85.929-52.186l.64-.663c18.735-19.573 21.386-35.842 8.36-58.1-9.059-15.475-19.03-22.92-30.18-25.025\",\"transform\":\"translate(112 112)\"},\"child\":[]}]}]})(props);\n};\nexport function AiOutlineSisternode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683586275\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M672 432c-120.3 0-219.9 88.5-237.3 204H320c-15.5 0-28-12.5-28-28V244h291c14.2 35.2 48.7 60 89 60 53 0 96-43 96-96s-43-96-96-96c-40.3 0-74.8 24.8-89 60H112v72h108v364c0 55.2 44.8 100 100 100h114.7c17.4 115.5 117 204 237.3 204 132.5 0 240-107.5 240-240S804.5 432 672 432z m128 266c0 4.4-3.6 8-8 8h-86v86c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-86h-86c-4.4 0-8-3.6-8-8v-52c0-4.4 3.6-8 8-8h86v-86c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v86h86c4.4 0 8 3.6 8 8v52z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSketch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M925.6 405.1l-203-253.7a6.5 6.5 0 0 0-5-2.4H306.4c-1.9 0-3.8.9-5 2.4l-203 253.7a6.5 6.5 0 0 0 .2 8.3l408.6 459.5c1.2 1.4 3 2.1 4.8 2.1 1.8 0 3.5-.8 4.8-2.1l408.6-459.5a6.5 6.5 0 0 0 .2-8.3zM645.2 206.4l34.4 133.9-132.5-133.9h98.1zm8.2 178.5H370.6L512 242l141.4 142.9zM378.8 206.4h98.1L344.3 340.3l34.5-133.9zm-53.4 7l-44.1 171.5h-93.1l137.2-171.5zM194.6 434.9H289l125.8 247.7-220.2-247.7zM512 763.4L345.1 434.9h333.7L512 763.4zm97.1-80.8L735 434.9h94.4L609.1 682.6zm133.6-297.7l-44.1-171.5 137.2 171.5h-93.1z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSkin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSkype (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-88.1 216C766.9 823.4 729 839 688.4 839c-26.1 0-51.8-6.8-74.6-19.7l-22.5-12.7-25.5 4.5c-17.8 3.2-35.8 4.8-53.6 4.8-41.4 0-81.3-8.1-119.1-24.1-36.3-15.3-69-37.3-97.2-65.5a304.29 304.29 0 0 1-65.5-97.1c-16-37.7-24-77.6-24-119 0-17.4 1.6-35.2 4.6-52.8l4.4-25.1L203 410a151.02 151.02 0 0 1-19.1-73.4c0-40.6 15.7-78.5 44.4-107.2C257.1 200.7 295 185 335.6 185a153 153 0 0 1 71.4 17.9l22.4 11.8 24.8-4.8c18.9-3.6 38.4-5.5 58-5.5 41.4 0 81.3 8.1 119 24 36.5 15.4 69.1 37.4 97.2 65.5 28.2 28.1 50.2 60.8 65.6 97.2 16 37.7 24 77.6 24 119 0 18.4-1.7 37-5.1 55.5l-4.7 25.5 12.6 22.6c12.6 22.5 19.2 48 19.2 73.7 0 40.7-15.7 78.5-44.4 107.2zM583.4 466.2L495 446.6c-33.6-7.7-72.3-17.8-72.3-49.5s27.1-53.9 76.1-53.9c98.7 0 89.7 67.8 138.7 67.8 25.8 0 48.4-15.2 48.4-41.2 0-60.8-97.4-106.5-180-106.5-89.7 0-185.2 38.1-185.2 139.5 0 48.8 17.4 100.8 113.6 124.9l119.4 29.8c36.1 8.9 45.2 29.2 45.2 47.6 0 30.5-30.3 60.3-85.2 60.3-107.2 0-92.3-82.5-149.7-82.5-25.8 0-44.5 17.8-44.5 43.1 0 49.4 60 115.4 194.2 115.4 127.7 0 191-61.5 191-144 0-53.1-24.5-109.6-121.3-131.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSlackSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4-13.3 0-26.1-5.3-35.6-14.8-9.4-9.5-14.7-22.3-14.7-35.6 0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4 13.3 0 26.1 5.3 35.6 14.8s14.7 22.3 14.7 35.6v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8-9.4-9.5-14.7-22.3-14.7-35.6 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSlack (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M409.4 128c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3 14.4 14.4 33.9 22.5 54.3 22.5h76.7v-76.8c0-42.3-34.3-76.7-76.7-76.8zm0 204.8H204.7c-42.4 0-76.7 34.4-76.7 76.8s34.4 76.8 76.7 76.8h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.8-76.6-76.8zM614 486.4c42.4 0 76.8-34.4 76.7-76.8V204.8c0-42.4-34.3-76.8-76.7-76.8-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.5 34.3 76.8 76.7 76.8zm281.4-76.8c0-42.4-34.4-76.8-76.7-76.8S742 367.2 742 409.6v76.8h76.7c42.3 0 76.7-34.4 76.7-76.8zm-76.8 128H614c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3 14.4 14.4 33.9 22.5 54.3 22.5h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM614 742.4h-76.7v76.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM409.4 537.6c-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8V614.4c0-20.3-8.1-39.9-22.4-54.3-14.4-14.4-34-22.5-54.3-22.5zM128 614.4c0 20.3 8.1 39.9 22.4 54.3 14.4 14.4 33.9 22.5 54.3 22.5 42.4 0 76.8-34.4 76.7-76.8v-76.8h-76.7c-42.3 0-76.7 34.4-76.7 76.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSliders (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440zm644-436h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSmallDash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M112 476h72v72h-72zm182 0h72v72h-72zm364 0h72v72h-72zm182 0h72v72h-72zm-364 0h72v72h-72z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSnippets (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSolution (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSortAscending (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSortDescending (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSplitCells (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683545621\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M938.2 508.4L787.3 389c-3-2.4-7.3-0.2-7.3 3.6V478H636V184h204v128c0 2.2 1.8 4 4 4h60c2.2 0 4-1.8 4-4V144c0-15.5-12.5-28-28-28H596c-15.5 0-28 12.5-28 28v736c0 15.5 12.5 28 28 28h284c15.5 0 28-12.5 28-28V712c0-2.2-1.8-4-4-4h-60c-2.2 0-4 1.8-4 4v128H636V546h144v85.4c0 3.8 4.4 6 7.3 3.6l150.9-119.4c2.4-1.8 2.4-5.4 0-7.2zM428 116H144c-15.5 0-28 12.5-28 28v168c0 2.2 1.8 4 4 4h60c2.2 0 4-1.8 4-4V184h204v294H244v-85.4c0-3.8-4.3-6-7.3-3.6l-151 119.4c-2.3 1.8-2.3 5.3 0 7.1l151 119.5c2.9 2.3 7.3 0.2 7.3-3.6V546h144v294H184V712c0-2.2-1.8-4-4-4h-60c-2.2 0-4 1.8-4 4v168c0 15.5 12.5 28 28 28h284c15.5 0 28-12.5 28-28V144c0-15.5-12.5-28-28-28z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSpotify (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M448 0C200.517 0 0 200.517 0 448s200.517 448 448 448 448-200.517 448-448S695.483 0 448 0m0 74.664a371.855 371.855 0 0 1 264.427 108.91A371.855 371.855 0 0 1 821.337 448a371.855 371.855 0 0 1-108.91 264.427A371.855 371.855 0 0 1 448 821.337a371.855 371.855 0 0 1-264.427-108.91A371.855 371.855 0 0 1 74.663 448a371.855 371.855 0 0 1 108.91-264.427A371.855 371.855 0 0 1 448 74.663M388.49 252c-72.613 0-135.893 6.72-196 25.685-15.903 3.174-29.157 15.158-29.157 37.334 0 22.138 16.352 41.701 38.491 38.453 9.483 0 15.904-3.472 22.176-3.472 50.587-12.693 107.632-18.667 164.49-18.667 110.545 0 224 24.64 299.825 68.843 9.482 3.21 12.693 6.981 22.176 6.981 22.176 0 37.632-16.314 40.842-38.49 0-18.966-9.482-31.062-22.176-37.334C634.368 277.648 508.517 252 388.491 252M378 390.843c-66.341 0-113.605 9.482-161.019 22.176-15.717 6.234-24.49 16.053-24.49 34.981 0 15.755 12.544 31.51 31.509 31.51 6.421 0 9.184-.3 18.667-3.51 34.72-9.483 82.394-15.157 133.018-15.157 104.235 0 194.955 25.386 261.334 66.49 6.234 3.211 12.693 5.824 22.138 5.824 18.966 0 31.51-16.053 31.51-34.981 0-12.693-5.974-25.237-18.667-31.51-82.133-50.586-186.517-75.823-294-75.823m10.49 136.49c-53.647 0-104.533 5.974-155.157 18.667-12.693 3.21-22.176 12.245-22.176 28 0 12.693 9.931 25.685 25.686 25.685 3.21 0 12.394-3.509 18.666-3.509a581.728 581.728 0 0 1 129.51-15.195c78.885 0 151.05 18.966 211.157 53.686 6.421 3.21 13.552 5.824 19.824 5.824 12.693 0 24.79-9.483 28-22.139 0-15.904-6.87-21.765-16.352-28-69.552-41.141-150.79-63.019-239.157-63.019\",\"transform\":\"translate(64 64)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStepBackward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStepForward (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0 0 45.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 0 0-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 0 0-45.2 0L165.7 610.5a7.94 7.94 0 0 0 0 11.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineStrikethrough (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M952 474H569.9c-10-2-20.5-4-31.6-6-15.9-2.9-22.2-4.1-30.8-5.8-51.3-10-82.2-20-106.8-34.2-35.1-20.5-52.2-48.3-52.2-85.1 0-37 15.2-67.7 44-89 28.4-21 68.8-32.1 116.8-32.1 54.8 0 97.1 14.4 125.8 42.8 14.6 14.4 25.3 32.1 31.8 52.6 1.3 4.1 2.8 10 4.3 17.8.9 4.8 5.2 8.2 9.9 8.2h72.8c5.6 0 10.1-4.6 10.1-10.1v-1c-.7-6.8-1.3-12.1-2-16-7.3-43.5-28-81.7-59.7-110.3-44.4-40.5-109.7-61.8-188.7-61.8-72.3 0-137.4 18.1-183.3 50.9-25.6 18.4-45.4 41.2-58.6 67.7-13.5 27.1-20.3 58.4-20.3 92.9 0 29.5 5.7 54.5 17.3 76.5 8.3 15.7 19.6 29.5 34.1 42H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h433.2c2.1.4 3.9.8 5.9 1.2 30.9 6.2 49.5 10.4 66.6 15.2 23 6.5 40.6 13.3 55.2 21.5 35.8 20.2 53.3 49.2 53.3 89 0 35.3-15.5 66.8-43.6 88.8-30.5 23.9-75.6 36.4-130.5 36.4-43.7 0-80.7-8.5-110.2-25-29.1-16.3-49.1-39.8-59.7-69.5-.8-2.2-1.7-5.2-2.7-9-1.2-4.4-5.3-7.5-9.7-7.5h-79.7c-5.6 0-10.1 4.6-10.1 10.1v1c.2 2.3.4 4.2.6 5.7 6.5 48.8 30.3 88.8 70.7 118.8 47.1 34.8 113.4 53.2 191.8 53.2 84.2 0 154.8-19.8 204.2-57.3 25-18.9 44.2-42.2 57.1-69 13-27.1 19.7-57.9 19.7-91.5 0-31.8-5.8-58.4-17.8-81.4-5.8-11.2-13.1-21.5-21.8-30.8H952c4.4 0 8-3.6 8-8v-60a8 8 0 0 0-8-7.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSubnode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683432252\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M688 240c-138 0-252 102.8-269.6 236H249c-14.2-35.2-48.7-60-89-60-53 0-96 43-96 96s43 96 96 96c40.3 0 74.8-24.8 89-60h169.3C436 681.2 550 784 688 784c150.2 0 272-121.8 272-272S838.2 240 688 240z m128 298c0 4.4-3.6 8-8 8h-86v86c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-86h-86c-4.4 0-8-3.6-8-8v-52c0-4.4 3.6-8 8-8h86v-86c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v86h86c4.4 0 8 3.6 8 8v52z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSun (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M548 818v126c0 8.837-7.163 16-16 16h-40c-8.837 0-16-7.163-16-16V818c15.845 1.643 27.845 2.464 36 2.464 8.155 0 20.155-.821 36-2.464m205.251-115.66 89.096 89.095c6.248 6.248 6.248 16.38 0 22.627l-28.285 28.285c-6.248 6.248-16.379 6.248-22.627 0L702.34 753.25c12.365-10.043 21.431-17.947 27.198-23.713 5.766-5.767 13.67-14.833 23.713-27.198m-482.502 0c10.043 12.365 17.947 21.431 23.713 27.198 5.767 5.766 14.833 13.67 27.198 23.713l-89.095 89.096c-6.248 6.248-16.38 6.248-22.627 0l-28.285-28.285c-6.248-6.248-6.248-16.379 0-22.627zM512 278c129.235 0 234 104.765 234 234S641.235 746 512 746 278 641.235 278 512s104.765-234 234-234m0 72c-89.47 0-162 72.53-162 162s72.53 162 162 162 162-72.53 162-162-72.53-162-162-162M206 476c-1.643 15.845-2.464 27.845-2.464 36 0 8.155.821 20.155 2.464 36H80c-8.837 0-16-7.163-16-16v-40c0-8.837 7.163-16 16-16zm738 0c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H818c1.643-15.845 2.464-27.845 2.464-36 0-8.155-.821-20.155-2.464-36ZM814.062 180.653l28.285 28.285c6.248 6.248 6.248 16.379 0 22.627L753.25 320.66c-10.043-12.365-17.947-21.431-23.713-27.198-5.767-5.766-14.833-13.67-27.198-23.713l89.095-89.096c6.248-6.248 16.38-6.248 22.627 0m-581.497 0 89.095 89.096c-12.365 10.043-21.431 17.947-27.198 23.713-5.766 5.767-13.67 14.833-23.713 27.198l-89.096-89.095c-6.248-6.248-6.248-16.38 0-22.627l28.285-28.285c6.248-6.248 16.379-6.248 22.627 0M532 64c8.837 0 16 7.163 16 16v126c-15.845-1.643-27.845-2.464-36-2.464-8.155 0-20.155.821-36 2.464V80c0-8.837 7.163-16 16-16z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSwapLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M872 572H266.8l144.3-183c4.1-5.2.4-13-6.3-13H340c-9.8 0-19.1 4.5-25.1 12.2l-164 208c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSwapRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M873.1 596.2l-164-208A32 32 0 0 0 684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSwap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSwitcher (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528zm168-728H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM300 550h296v64H300z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineSync (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 0 1 755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 0 1 512.1 856a342.24 342.24 0 0 1-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 0 0-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 0 0-8-8.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTable (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 208H676V232h212v136zm0 224H676V432h212v160zM412 432h200v160H412V432zm200-64H412V232h200v136zm-476 64h212v160H136V432zm0-200h212v136H136V232zm0 424h212v136H136V656zm276 0h200v136H412V656zm476 136H676V656h212v136z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTablet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTags (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm62.6-651.7l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9zm60.16 186.23a48 48 0 1 0 67.88-67.89 48 48 0 1 0-67.88 67.89zM889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTaobaoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTaobao (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M168.5 273.7a68.7 68.7 0 1 0 137.4 0 68.7 68.7 0 1 0-137.4 0zm730 79.2s-23.7-184.4-426.9-70.1c17.3-30 25.6-49.5 25.6-49.5L396.4 205s-40.6 132.6-113 194.4c0 0 70.1 40.6 69.4 39.4 20.1-20.1 38.2-40.6 53.7-60.4 16.1-7 31.5-13.6 46.7-19.8-18.6 33.5-48.7 83.8-78.8 115.6l42.4 37s28.8-27.7 60.4-61.2h36v61.8H372.9v49.5h140.3v118.5c-1.7 0-3.6 0-5.4-.2-15.4-.7-39.5-3.3-49-18.2-11.5-18.1-3-51.5-2.4-71.9h-97l-3.4 1.8s-35.5 159.1 102.3 155.5c129.1 3.6 203-36 238.6-63.1l14.2 52.6 79.6-33.2-53.9-131.9-64.6 20.1 12.1 45.2c-16.6 12.4-35.6 21.7-56.2 28.4V561.3h137.1v-49.5H628.1V450h137.6v-49.5H521.3c17.6-21.4 31.5-41.1 35-53.6l-42.5-11.6c182.8-65.5 284.5-54.2 283.6 53.2v282.8s10.8 97.1-100.4 90.1l-60.2-12.9-14.2 57.1S882.5 880 903.7 680.2c21.3-200-5.2-327.3-5.2-327.3zm-707.4 18.3l-45.4 69.7 83.6 52.1s56 28.5 29.4 81.9C233.8 625.5 112 736.3 112 736.3l109 68.1c75.4-163.7 70.5-142 89.5-200.7 19.5-60.1 23.7-105.9-9.4-139.1-42.4-42.6-47-46.6-110-93.4z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTeam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M824.2 699.9a301.55 301.55 0 0 0-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 0 1 612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 0 0 8-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 0 1 612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineThunderbolt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTikTok (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M365.014.667C408.68 0 452.011.333 495.342 0c2.667 51 21 102.999 58.33 138.998 37.332 37 89.997 54 141.328 59.666v134.332c-47.998-1.667-96.33-11.667-139.994-32.333-19-8.667-36.665-19.667-53.998-31-.333 97.332.334 194.665-.666 291.663-2.667 46.666-18 93-44.998 131.332-43.665 64-119.328 105.665-196.992 106.999-47.664 2.666-95.329-10.334-135.994-34.333C55.028 725.658 7.696 652.992.697 574.993c-.667-16.667-1-33.333-.334-49.666 6-63.333 37.332-123.999 85.997-165.332 55.33-47.999 132.66-70.999 204.99-57.332.667 49.333-1.332 98.665-1.332 147.998-33-10.667-71.664-7.667-100.663 12.333-20.999 13.667-36.998 34.666-45.331 58.333-7 17-5 35.666-4.667 53.666 8 54.666 60.664 100.665 116.662 95.665 37.332-.333 72.997-22 92.33-53.666 6.332-11 13.332-22.333 13.665-35.333 3.334-59.666 2-118.998 2.334-178.664.333-134.332-.334-268.33.666-402.328\",\"transform\":\"translate(165 112)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineToTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M885 780H165c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM400 325.7h73.9V664c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V325.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 171a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTrademarkCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTrademark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTransaction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M668.6 320c0-4.4-3.6-8-8-8h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.5-1.1.9-2.4.9-3.7zM157.9 504.2a352.7 352.7 0 0 1 103.5-242.4c32.5-32.5 70.3-58.1 112.4-75.9 43.6-18.4 89.9-27.8 137.6-27.8 47.8 0 94.1 9.3 137.6 27.8 42.1 17.8 79.9 43.4 112.4 75.9 10 10 19.3 20.5 27.9 31.4l-50 39.1a8 8 0 0 0 3 14.1l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3l-47.8 37.4C770.7 146.3 648.6 82 511.5 82 277 82 86.3 270.1 82 503.8a8 8 0 0 0 8 8.2h60c4.3 0 7.8-3.5 7.9-7.8zM934 512h-60c-4.3 0-7.9 3.5-8 7.8a352.7 352.7 0 0 1-103.5 242.4 352.57 352.57 0 0 1-112.4 75.9c-43.6 18.4-89.9 27.8-137.6 27.8s-94.1-9.3-137.6-27.8a352.57 352.57 0 0 1-112.4-75.9c-10-10-19.3-20.5-27.9-31.4l49.9-39.1a8 8 0 0 0-3-14.1l-156.8-38.3c-5-1.2-9.9 2.6-9.9 7.7l-.8 161.7c0 6.7 7.7 10.5 12.9 6.3l47.8-37.4C253.3 877.7 375.4 942 512.5 942 747 942 937.7 753.9 942 520.2a8 8 0 0 0-8-8.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTranslation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683569194\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M140 188h584v164h76V144c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h544v-76H140V188z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M414.3 256h-60.6c-3.4 0-6.4 2.2-7.6 5.4L219 629.4c-0.3 0.8-0.4 1.7-0.4 2.6 0 4.4 3.6 8 8 8h55.1c3.4 0 6.4-2.2 7.6-5.4L322 540h196.2L422 261.4c-1.3-3.2-4.3-5.4-7.7-5.4z m12.4 228h-85.5L384 360.2 426.7 484zM936 528H800v-93c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v93H592c-13.3 0-24 10.7-24 24v176c0 13.3 10.7 24 24 24h136v152c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V752h136c13.3 0 24-10.7 24-24V552c0-13.3-10.7-24-24-24zM728 680h-88v-80h88v80z m160 0h-88v-80h88v80z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTrophy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM184 352V232h64v207.6a91.99 91.99 0 0 1-64-87.6zm520 128c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTruck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M608 192c17.673 0 32 14.327 32 32v160h174.815a32 32 0 0 1 26.676 14.327l113.186 170.846A32 32 0 0 1 960 586.846V672c0 17.673-14.327 32-32 32h-96c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128H384c0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128H96c-17.673 0-32-14.327-32-32V224c0-17.673 14.327-32 32-32zM256 640c-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64l1.058-.009C291.916 767.426 320 738.993 320 704c0-35.346-28.654-64-64-64m448 0c-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64l1.058-.009C739.916 767.426 768 738.993 768 704c0-35.346-28.654-64-64-64M576 256H128v384h17.124c22.131-38.259 63.498-64 110.876-64 47.378 0 88.745 25.741 110.876 64H576zm221.629 192H640v145.124C658.829 582.234 680.687 576 704 576c47.378 0 88.745 25.741 110.876 64H896v-43.516zM500 448c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H332c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12zM308 320c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTwitch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M52.133 0 0 139.167v556.466h191.2V800h104.4l104.233-104.4h156.5L765 487V0zm69.534 69.5H695.5v382.633L573.767 573.867H382.5L278.267 678.1V573.867h-156.6zM313 417.4h69.5V208.733H313zm191.167 0H573.7V208.733h-69.533z\",\"transform\":\"translate(114 112)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineTwitter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0 0 75-94 336.64 336.64 0 0 1-108.2 41.2A170.1 170.1 0 0 0 672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 0 0-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 0 1-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 0 1-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUnderline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M824 804H200c-4.4 0-8 3.4-8 7.6v60.8c0 4.2 3.6 7.6 8 7.6h624c4.4 0 8-3.4 8-7.6v-60.8c0-4.2-3.6-7.6-8-7.6zm-312-76c69.4 0 134.6-27.1 183.8-76.2C745 602.7 772 537.4 772 468V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 97-79 176-176 176s-176-79-176-176V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 69.4 27.1 134.6 76.2 183.8C377.3 701 442.6 728 512 728z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUndo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUngroup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683823033\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M736 550H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16h448c8.8 0 16-7.2 16-16V566c0-8.8-7.2-16-16-16z m-56 136H344v-64h336v64zM888 816c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z m0 96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zM736 266H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16h448c8.8 0 16-7.2 16-16V282c0-8.8-7.2-16-16-16z m-56 136H344v-64h336v64zM888 208c39.8 0 72-32.2 72-72s-32.2-72-72-72-72 32.2-72 72 32.2 72 72 72z m0-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zM136 64c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z m0 96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zM136 816c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z m0 96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUnlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUnorderedList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M518.5 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M334 624h46.9c10.2 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246A7.96 7.96 0 0 0 334 624z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 0 0 140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-424 0V184h352v248H336zm120-184h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUserAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 888.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUserDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M678.3 655.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 518 759.6 444.7 759.6 362c0-137-110.8-248-247.5-248S264.7 225 264.7 362c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 901.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 641.2 432.2 610 512.2 610c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 534c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 362c0-45.9 17.9-89.1 50.3-121.6S466.3 190 512.2 190s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 362c0 45.9-17.9 89.1-50.3 121.6C601.1 516.1 558 534 512.2 534zM880 772H640c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUserSwitch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683921137\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M759 335c0-137-111-248-248-248S263 198 263 335c0 82.8 40.6 156.2 103 201.2-0.4 0.2-0.7 0.3-0.9 0.4-44.7 18.9-84.8 46-119.3 80.6-34.5 34.5-61.5 74.7-80.4 119.5C146.9 780.5 137 827 136 874.8c-0.1 4.5 3.5 8.2 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C356 614.2 431 583 511 583c137 0 248-111 248-248zM511 507c-95 0-172-77-172-172s77-172 172-172 172 77 172 172-77 172-172 172zM616 728h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H703.5l47.2-60.1c1.1-1.4 1.7-3.2 1.7-4.9 0-4.4-3.6-8-8-8h-72.6c-4.9 0-9.5 2.3-12.6 6.1l-68.5 87.1c-4.4 5.6-6.8 12.6-6.8 19.8 0.1 17.7 14.4 32 32.1 32zM856 792H592c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h176.5l-47.2 60.1c-1.1 1.4-1.7 3.2-1.7 4.9 0 4.4 3.6 8 8 8h72.6c4.9 0 9.5-2.3 12.6-6.1l68.5-87.1c4.4-5.6 6.8-12.6 6.8-19.8-0.1-17.7-14.4-32-32.1-32z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUser (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUsergroupAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineUsergroupDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M888 784H664c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7zM824 484c0-109.4-87.9-198.3-196.9-200C516.3 282.3 424 373.2 424 484c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 754.6 326 826.8 324 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 707.7 563 684 624 684c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 598.7 658.2 612 624 612s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerified (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683899926\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M447.8 588.8l-7.3-32.5c-0.2-1-0.6-1.9-1.1-2.7-2.5-3.7-7.4-4.7-11.1-2.2L405 567V411c0-4.4-3.6-8-8-8h-81c-4.4 0-8 3.6-8 8v36c0 4.4 3.6 8 8 8h37v192.4c0 1.7 0.5 3.3 1.5 4.7 2.6 3.6 7.6 4.4 11.2 1.8l79-56.8c2.6-1.9 3.8-5.1 3.1-8.3zM391.1 372.2l0.2 0.2c3.2 3 8.3 2.8 11.3-0.5l24.1-26.2c2.9-3.2 2.8-8.1-0.3-11.2l-53.7-52.1c-3.1-3-8.1-3-11.2 0.1l-24.7 24.7c-3.1 3.1-3.1 8.2 0.1 11.3l54.2 53.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 0.7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c0.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M452 297v36c0 4.4 3.6 8 8 8h108v274h-38V405c0-4.4-3.6-8-8-8h-35c-4.4 0-8 3.6-8 8v210h-31c-4.4 0-8 3.6-8 8v37c0 4.4 3.6 8 8 8h244c4.4 0 8-3.6 8-8v-37c0-4.4-3.6-8-8-8h-72V493h58c4.4 0 8-3.6 8-8v-35c0-4.4-3.6-8-8-8h-58V341h63c4.4 0 8-3.6 8-8v-36c0-4.4-3.6-8-8-8H460c-4.4 0-8 3.6-8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerticalAlignBottom (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerticalAlignMiddle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 0 0-11.3 0L405.6 752.3a7.23 7.23 0 0 0 5.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerticalAlignTop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerticalLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512 265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512 267.1 157.9A7.95 7.95 0 0 0 254 164z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVerticalRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVideoCameraAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683915274\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M368 724H252V608c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v116H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h116v116c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V788h116c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v352h72V232h576v560H448v72h272c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM888 625l-104-59.8V458.9L888 399v226z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M320 360c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineVideoCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0 264H184V184h656v200H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200zM580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWarning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWechatWork (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M845.784 581.585a135.867 135.867 0 0 0-47.042 19.049 114.236 114.236 0 0 1-51.41 31.075c2.613-17.554 11.313-33.577 24.455-45.418a169.303 169.303 0 0 0 23.409-55.017c-.061-27.838 22.44-50.459 50.265-50.534 27.827-.076 50.45 22.423 50.539 50.26.089 27.839-22.39 50.482-50.215 50.585zM753.568 460.83a168.829 168.829 0 0 0-54.808-23.68c-27.836 0-50.402-22.575-50.402-50.423 0-27.848 22.566-50.423 50.402-50.423 27.836 0 50.402 22.575 50.402 50.423a137.497 137.497 0 0 0 18.817 47.211 114.809 114.809 0 0 1 30.764 51.656 76.08 76.08 0 0 1-45.026-24.763h-.186zm-83.033-177.713C655.34 155.789 523.548 56.026 364.09 56.026c-169.874 0-308.088 113.097-308.088 252.19 2.72 78.1 43.941 149.778 110.063 191.385a311.284 311.284 0 0 0 33.602 21.588l-13.664 54.569c4.928 2.316 9.706 4.78 14.746 6.91l68.996-34.512c10.08 2.615 20.683 4.295 31.21 6.088 6.721 1.195 13.442 2.428 20.35 3.25a354.835 354.835 0 0 0 128.805-7.396 248.885 248.885 0 0 0 10.154 55.055 425.638 425.638 0 0 1-96.175 11.242 417.983 417.983 0 0 1-86.392-9.524l-125.186 62.526a27.619 27.619 0 0 1-29.98-3.137 28.019 28.019 0 0 1-9.67-28.611l22.401-90.239C53.176 495.186 2.463 405.506 0 308.216 0 137.973 163.004 0 364.09 0c190.93 0 347.29 124.527 362.521 282.818a244.967 244.967 0 0 0-26.47-2.614c-9.893.374-19.787 1.307-29.607 2.876zM554.237 481.934c16.764-3.362 32.706-9.786 47.042-19.049a114.236 114.236 0 0 1 51.447-31.001 76.466 76.466 0 0 1-24.491 45.344c-11.014 16.807-18.929 35.483-23.409 55.054.041 27.833-22.468 50.435-50.29 50.497-27.821.062-50.43-22.44-50.514-50.273-.082-27.833 22.393-50.469 50.215-50.572m90.798 121.314c16.652 11.168 35.17 19.236 54.659 23.904 20.386 0 38.764 12.286 46.565 31.127 7.801 18.842 3.49 40.53-10.926 54.95-14.414 14.422-36.093 18.736-54.927 10.931-18.834-7.804-31.114-26.19-31.114-46.585a136.736 136.736 0 0 0-18.668-47.285 114.714 114.714 0 0 1-30.54-51.805 76 76 0 0 1 44.951 25.062z\",\"transform\":\"translate(64 148)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWechat (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWeiboCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWeiboSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWeibo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M457.3 543c-68.1-17.7-145 16.2-174.6 76.2-30.1 61.2-1 129.1 67.8 151.3 71.2 23 155.2-12.2 184.4-78.3 28.7-64.6-7.2-131-77.6-149.2zm-52 156.2c-13.8 22.1-43.5 31.7-65.8 21.6-22-10-28.5-35.7-14.6-57.2 13.7-21.4 42.3-31 64.4-21.7 22.4 9.5 29.6 35 16 57.3zm45.5-58.5c-5 8.6-16.1 12.7-24.7 9.1-8.5-3.5-11.2-13.1-6.4-21.5 5-8.4 15.6-12.4 24.1-9.1 8.7 3.2 11.8 12.9 7 21.5zm334.5-197.2c15 4.8 31-3.4 35.9-18.3 11.8-36.6 4.4-78.4-23.2-109a111.39 111.39 0 0 0-106-34.3 28.45 28.45 0 0 0-21.9 33.8 28.39 28.39 0 0 0 33.8 21.8c18.4-3.9 38.3 1.8 51.9 16.7a54.2 54.2 0 0 1 11.3 53.3 28.45 28.45 0 0 0 18.2 36zm99.8-206c-56.7-62.9-140.4-86.9-217.7-70.5a32.98 32.98 0 0 0-25.4 39.3 33.12 33.12 0 0 0 39.3 25.5c55-11.7 114.4 5.4 154.8 50.1 40.3 44.7 51.2 105.7 34 159.1-5.6 17.4 3.9 36 21.3 41.7 17.4 5.6 36-3.9 41.6-21.2v-.1c24.1-75.4 8.9-161.1-47.9-223.9zM729 499c-12.2-3.6-20.5-6.1-14.1-22.1 13.8-34.7 15.2-64.7.3-86-28-40.1-104.8-37.9-192.8-1.1 0 0-27.6 12.1-20.6-9.8 13.5-43.5 11.5-79.9-9.6-101-47.7-47.8-174.6 1.8-283.5 110.6C127.3 471.1 80 557.5 80 632.2 80 775.1 263.2 862 442.5 862c235 0 391.3-136.5 391.3-245 0-65.5-55.2-102.6-104.8-118zM443 810.8c-143 14.1-266.5-50.5-275.8-144.5-9.3-93.9 99.2-181.5 242.2-195.6 143-14.2 266.5 50.5 275.8 144.4C694.4 709 586 796.6 443 810.8z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWhatsApp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"t\":\"1569683925316\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M713.5 599.9c-10.9-5.6-65.2-32.2-75.3-35.8-10.1-3.8-17.5-5.6-24.8 5.6-7.4 11.1-28.4 35.8-35 43.3-6.4 7.4-12.9 8.3-23.8 2.8-64.8-32.4-107.3-57.8-150-131.1-11.3-19.5 11.3-18.1 32.4-60.2 3.6-7.4 1.8-13.7-1-19.3-2.8-5.6-24.8-59.8-34-81.9-8.9-21.5-18.1-18.5-24.8-18.9-6.4-0.4-13.7-0.4-21.1-0.4-7.4 0-19.3 2.8-29.4 13.7-10.1 11.1-38.6 37.8-38.6 92s39.5 106.7 44.9 114.1c5.6 7.4 77.7 118.6 188.4 166.5 70 30.2 97.4 32.8 132.4 27.6 21.3-3.2 65.2-26.6 74.3-52.5 9.1-25.8 9.1-47.9 6.4-52.5-2.7-4.9-10.1-7.7-21-13z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3-41.3-41.3-89.5-73.8-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6 0.3-119.3 12.3-174.5 35.9-53.3 22.8-101.1 55.2-142 96.5-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9 0.3 69.4 16.9 138.3 48 199.9v152c0 25.4 20.6 46 46 46h152.1c61.6 31.1 130.5 47.7 199.9 48h2.1c59.9 0 118-11.6 172.7-34.3 53.5-22.3 101.6-54.3 142.8-95.2 41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5 0.3-60.9-11.5-120-34.8-175.6z m-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-0.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-0.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-0.6 99.6-39.7 192.9-110.1 262.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M723 620.5C666.8 571.6 593.4 542 513 542s-153.8 29.6-210.1 78.6a8.1 8.1 0 0 0-.8 11.2l36 42.9c2.9 3.4 8 3.8 11.4.9C393.1 637.2 450.3 614 513 614s119.9 23.2 163.5 61.5c3.4 2.9 8.5 2.5 11.4-.9l36-42.9c2.8-3.3 2.4-8.3-.9-11.2zm117.4-140.1C751.7 406.5 637.6 362 513 362s-238.7 44.5-327.5 118.4a8.05 8.05 0 0 0-1 11.3l36 42.9c2.8 3.4 7.9 3.8 11.2 1C308 472.2 406.1 434 513 434s205 38.2 281.2 101.6c3.4 2.8 8.4 2.4 11.2-1l36-42.9c2.8-3.4 2.4-8.5-1-11.3zm116.7-139C835.7 241.8 680.3 182 511 182c-168.2 0-322.6 59-443.7 157.4a8 8 0 0 0-1.1 11.4l36 42.9c2.8 3.3 7.8 3.8 11.1 1.1C222 306.7 360.3 254 511 254c151.8 0 291 53.5 400 142.7 3.4 2.8 8.4 2.3 11.2-1.1l36-42.9c2.9-3.4 2.4-8.5-1.1-11.3zM448 778a64 64 0 1 0 128 0 64 64 0 1 0-128 0z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWindows (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M120.1 770.6L443 823.2V543.8H120.1v226.8zm63.4-163.5h196.2v141.6l-196.2-31.9V607.1zm340.3 226.5l382 62.2v-352h-382v289.8zm63.4-226.5h255.3v214.4l-255.3-41.6V607.1zm-63.4-415.7v288.8h382V128.1l-382 63.3zm318.7 225.5H587.3V245l255.3-42.3v214.2zm-722.4 63.3H443V201.9l-322.9 53.5v224.8zM183.5 309l196.2-32.5v140.4H183.5V309z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineWoman (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M712.8 548.8c53.6-53.6 83.2-125 83.2-200.8 0-75.9-29.5-147.2-83.2-200.8C659.2 93.6 587.8 64 512 64s-147.2 29.5-200.8 83.2C257.6 200.9 228 272.1 228 348c0 63.8 20.9 124.4 59.4 173.9 7.3 9.4 15.2 18.3 23.7 26.9 8.5 8.5 17.5 16.4 26.8 23.7 39.6 30.8 86.3 50.4 136.1 57V736H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h114v140c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V812h114c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H550V629.5c61.5-8.2 118.2-36.1 162.8-80.7zM512 556c-55.6 0-107.7-21.6-147.1-60.9C325.6 455.8 304 403.6 304 348s21.6-107.7 60.9-147.1C404.2 161.5 456.4 140 512 140s107.7 21.6 147.1 60.9C698.4 240.2 720 292.4 720 348s-21.6 107.7-60.9 147.1C619.7 534.4 567.6 556 512 556z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineX (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\",\"fill\":\"currentColor\",\"fillRule\":\"evenodd\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M818 800 498.11 333.745l.546.437L787.084 0h-96.385L455.738 272 269.15 0H16.367l298.648 435.31-.036-.037L0 800h96.385l261.222-302.618L565.217 800zM230.96 72.727l448.827 654.546h-76.38L154.217 72.727z\",\"transform\":\"translate(103 112)\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineYahoo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M859.9 681.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm0 507C245.1 738 121 634.6 121 512.5c0-62.3 32.3-119.7 84.9-161v48.4h37l159.8 159.9v65.3h-84.4v56.3h225.1v-56.3H459v-65.3l103.5-103.6h65.3v-56.3H459v65.3l-28.1 28.1-93.4-93.5h37v-56.3H216.4c49.4-35 114.3-56.6 186.2-56.6 157.6 0 281.6 103.4 281.6 225.5S560.2 738 402.6 738zm534.7-507H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineYoutube (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 0 0-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0 0 82.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineYuque (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.8-8.1-194.9-3-195-3 .1 0 87.4 55.6 52.4 154.7-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6zm-204.1 334c-10.6 0-26.2.1-46.8.3l-23.6.2-17.8 15.5c-47.1 41-104.4 71.5-171.4 87.6-52.5 12.6-110 16.2-172.7 9.6 18-20.5 36.5-41.6 55.4-63.1 92-104.6 173.8-197.5 236.9-268.5l1.4-1.4 1.3-1.5c4.1-4.6 20.6-23.3 24.7-28.1 9.7-11.1 17.3-19.9 24.5-28.6 30.7-36.7 52.2-67.8 69-102.2l1.6-3.3 1.2-3.4c13.7-38.8 15.4-76.9 6.2-112.8 22.5.7 46.5 1.9 71.7 3.6 33.3 2.3 55.5 12.9 71.1 29.2 5.8 6 10.2 12.5 13.4 18.7 1 2 1.7 3.6 2.3 5l5 17.7c-15.7 34.5-19.9 73.3-11.4 107.2 3 11.8 6.9 22.4 12.3 34.4 2.1 4.7 9.5 20.1 11 23.3 10.3 22.7 15.4 43 16.7 78.7 3.3 94.6-82.7 181.9-182 181.9z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineZhihu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M564.7 230.1V803h60l25.2 71.4L756.3 803h131.5V230.1H564.7zm247.7 497h-59.9l-75.1 50.4-17.8-50.4h-18V308.3h170.7v418.8zM526.1 486.9H393.3c2.1-44.9 4.3-104.3 6.6-172.9h130.9l-.1-8.1c0-.6-.2-14.7-2.3-29.1-2.1-15-6.6-34.9-21-34.9H287.8c4.4-20.6 15.7-69.7 29.4-93.8l6.4-11.2-12.9-.7c-.8 0-19.6-.9-41.4 10.6-35.7 19-51.7 56.4-58.7 84.4-18.4 73.1-44.6 123.9-55.7 145.6-3.3 6.4-5.3 10.2-6.2 12.8-1.8 4.9-.8 9.8 2.8 13 10.5 9.5 38.2-2.9 38.5-3 .6-.3 1.3-.6 2.2-1 13.9-6.3 55.1-25 69.8-84.5h56.7c.7 32.2 3.1 138.4 2.9 172.9h-141l-2.1 1.5c-23.1 16.9-30.5 63.2-30.8 65.2l-1.4 9.2h167c-12.3 78.3-26.5 113.4-34 127.4-3.7 7-7.3 14-10.7 20.8-21.3 42.2-43.4 85.8-126.3 153.6-3.6 2.8-7 8-4.8 13.7 2.4 6.3 9.3 9.1 24.6 9.1 5.4 0 11.8-.3 19.4-1 49.9-4.4 100.8-18 135.1-87.6 17-35.1 31.7-71.7 43.9-108.9L497 850l5-12c.8-1.9 19-46.3 5.1-95.9l-.5-1.8-108.1-123-22 16.6c6.4-26.1 10.6-49.9 12.5-71.1h158.7v-8c0-40.1-18.5-63.9-19.2-64.9l-2.4-3z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineZoomIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\"},\"child\":[]}]})(props);\n};\nexport function AiOutlineZoomOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneAccountBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-65.6 121.8l-89.3 164.1h49.1c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4V752c0 4.4-3.6 8-8 8h-41.3c-4.4 0-8-3.6-8-8v-53.8h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8H467l-89.3-164c-2.1-3.9-.7-8.8 3.2-10.9 1.1-.7 2.5-1 3.8-1h46a8 8 0 0 1 7.1 4.4l73.4 145.4h2.8l73.4-145.4c1.3-2.7 4.1-4.4 7.1-4.4h45c4.5 0 8 3.6 7.9 8 0 1.3-.4 2.6-1 3.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneAlert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M340 585c0-5.5 4.5-10 10-10h44c5.5 0 10 4.5 10 10v171h355V563c0-136.4-110.6-247-247-247S265 426.6 265 563v193h75V585z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M216.9 310.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8zm348 712H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zm-639-96c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneApi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M148.2 674.6zm106.7-92.3c-25 25-38.7 58.1-38.7 93.4s13.8 68.5 38.7 93.4c25 25 58.1 38.7 93.4 38.7 35.3 0 68.5-13.8 93.4-38.7l59.4-59.4-186.8-186.8-59.4 59.4zm420.8-366.1c-35.3 0-68.5 13.8-93.4 38.7l-59.4 59.4 186.8 186.8 59.4-59.4c24.9-25 38.7-58.1 38.7-93.4s-13.8-68.5-38.7-93.4c-25-25-58.1-38.7-93.4-38.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2a199.45 199.45 0 0 0-58.6 140.4c-.2 39.5 11.2 79.1 34.3 113.1l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7-24.9-24.9-38.7-58.1-38.7-93.4s13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4zm476-620.3l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7s68.4 13.7 93.4 38.7c24.9 24.9 38.7 58.1 38.7 93.4s-13.8 68.4-38.7 93.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneAppstore (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm52-668H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M212 212h200v200H212zm400 0h200v200H612zM212 612h200v200H212zm400 0h200v200H612z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneAudio (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 552c54.3 0 98-43.2 98-96V232c0-52.8-43.7-96-98-96s-98 43.2-98 96v224c0 52.8 43.7 96 98 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-98-392c0-52.8 43.7-96 98-96s98 43.2 98 96v224c0 52.8-43.7 96-98 96s-98-43.2-98-96V232z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBank (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M240.9 393.9h542.2L512 196.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374zM240.9 393.9L512 196.7l271.1 197.2H240.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBell (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 220c-55.6 0-107.8 21.6-147.1 60.9S304 372.4 304 428v340h416V428c0-55.6-21.6-107.8-60.9-147.1S567.6 220 512 220zm280 208c0-141.1-104.3-257.8-240-277.2v.1c135.7 19.4 240 136 240 277.1zM472 150.9v-.1C336.3 170.2 232 286.9 232 428c0-141.1 104.3-257.7 240-277.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zm208-120H304V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zM232 888V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752H232z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M668 345.9V136h-96v211.4l49.5-35.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M727.9 136v296.5c0 8.8-7.2 16-16 16-3.4 0-6.7-1.1-9.4-3.1L621.1 386l-83.8 59.9a15.9 15.9 0 0 1-22.3-3.7c-2-2.7-3-6-3-9.3V136H232v752h559.9V136h-64z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBoxPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M296 368h88v288h-88zm152 0h280v288H448z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM384 656h-88V368h88v288zm344 0H448V368h280v288z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M308 412v268c0 36.779 9.678 71.962 27.805 102.907a205.39 205.39 0 0 0 73.288 73.288C440.038 874.322 475.22 884 512 884c36.779 0 71.962-9.678 102.907-27.805a205.39 205.39 0 0 0 73.288-73.288C706.322 751.962 716 716.78 716 680V412H308zm484 172v96c0 6.503-.222 12.954-.658 19.346C859.931 728.636 908 796.705 908 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-44.24-23.94-82.888-59.57-103.697a278.635 278.635 0 0 1-22.658 49.018 281.39 281.39 0 0 1-100.45 100.45C611.84 946.072 563.546 960 512 960s-99.84-13.929-141.321-38.228a281.39 281.39 0 0 1-100.45-100.45 278.635 278.635 0 0 1-22.658-49.019C211.94 793.113 188 831.76 188 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-79.295 48.07-147.363 116.658-176.654A284.122 284.122 0 0 1 232 680v-96H84a8 8 0 0 1-8-8v-56a8 8 0 0 1 8-8h148V412c-76.768 0-139-62.232-139-139a8 8 0 0 1 8-8h60a8 8 0 0 1 8 8c0 34.794 28.206 63 63 63h560c34.794 0 63-28.206 63-63a8 8 0 0 1 8-8h60a8 8 0 0 1 8 8c0 76.768-62.232 139-139 139v100h148a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H792zM368 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-40.039 8.779-76.746 25.9-108.068 17.235-31.526 42.506-56.797 74.032-74.031C427.254 72.779 463.962 64 504 64h16c40.039 0 76.746 8.779 108.068 25.9 31.526 17.235 56.797 42.506 74.031 74.032C719.221 195.254 728 231.962 728 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-28.326-5.938-53.154-17.077-73.531-10.625-19.437-25.955-34.767-45.392-45.392C573.154 141.937 548.326 136 520 136h-16c-28.326 0-53.154 5.938-73.531 17.077-19.437 10.625-34.767 25.955-45.392 45.392C373.937 218.846 368 243.674 368 272z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M308 412v268c0 36.779 9.678 71.962 27.805 102.907a205.39 205.39 0 0 0 73.288 73.288C440.038 874.322 475.22 884 512 884c36.779 0 71.962-9.678 102.907-27.805a205.39 205.39 0 0 0 73.288-73.288C706.322 751.962 716 716.78 716 680V412H308z\",\"fill\":\"#E6E6E6\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBuild (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M144 546h200v200H144zm268-268h200v200H412z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM344 746H144V546h200v200zm268 0H412V546h200v200zm0-268H412V278h200v200zm268 0H680V278h200v200z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneBulb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 136c-141.4 0-256 114.6-256 256 0 92.5 49.4 176.3 128.1 221.8l35.9 20.8V752h184V634.6l35.9-20.8C718.6 568.3 768 484.5 768 392c0-141.4-114.6-256-256-256z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm256.2-75h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zM576 335c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 265c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 104c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zM248 335c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M383.5 675l61.3-74.8c4.3-5.2.7-13.1-5.9-13.1h-50.8c-2.3 0-4.4 1-5.9 2.9l-34 41.6-34-41.6a7.69 7.69 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.4-1 5.9-2.9l35.5-43.5 35.5 43.5c1.4 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 6-13.2L383.5 675zM251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 369h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M864 320H677.2l-17.1-47.8-22.9-64.2H386.7l-22.9 64.2-17.1 47.8H160c-4.4 0-8 3.6-8 8v456c0 4.4 3.6 8 8 8h704c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8zM512 704c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M199.6 474L184 517v237h656V517l-15.6-43H199.6zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M720 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM840 754H184V517l15.6-43h624.8l15.6 43v237z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm420 23h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCarryOut (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-17.5 128.8L481.9 725.5a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.9-6.6 13-6.6H688c6.5 0 10.3 7.4 6.5 12.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCheckCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCheckSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm130-367.8h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H688c6.5 0 10.3 7.4 6.5 12.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L307.5 484.9c-3.8-5.3 0-12.7 6.5-12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M432.2 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7h-46.9c-10.3 0-19.9 5-25.9 13.3L458 584.3l-71.2-98.8c-6-8.4-15.7-13.3-25.9-13.3H314c-6.5 0-10.3 7.4-6.5 12.7l124.7 172.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCiCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneClockCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm176.5 509.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.6-3.6 1.8-8.6-1.8-11.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCloseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 0 1-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCloseSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm163.9-473.9A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M354 671h58.9c4.8 0 9.3-2.1 12.3-5.7L512 561.8l86.8 103.5c3.1 3.6 7.6 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.3-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.8 0-9.3 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3.1-3.6-7.6-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCloud (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M791.9 492l-37.8-10-13.8-36.5c-8.6-22.7-20.6-44.1-35.7-63.4a245.73 245.73 0 0 0-52.4-49.9c-41.1-28.9-89.5-44.2-140-44.2s-98.9 15.3-140 44.2a245.6 245.6 0 0 0-52.4 49.9 240.47 240.47 0 0 0-35.7 63.4l-13.9 36.6-37.9 9.9a125.7 125.7 0 0 0-66.1 43.7A123.1 123.1 0 0 0 140 612c0 33.1 12.9 64.3 36.3 87.7 23.4 23.4 54.5 36.3 87.6 36.3h496.2c33.1 0 64.2-12.9 87.6-36.3A123.3 123.3 0 0 0 884 612c0-56.2-37.8-105.5-92.1-120z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm339.5-223h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8zM308 610.3c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M321.1 679.1l192-161c3.9-3.2 3.9-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCompass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM327.6 701.7c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2L421 470.9 553.1 603l-225.5 98.7zm375.1-375.1L604 552.1 471.9 420l225.5-98.7c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M322.3 696.4c-.4 1-.4 2.2 0 3.2.9 2.1 3.3 3 5.3 2.1L553.1 603 421 470.9l-98.7 225.5zm375.1-375.1L471.9 420 604 552.1l98.7-225.5c.4-1.1.4-2.2 0-3.2-.9-2.1-3.3-3-5.3-2.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M460.3 526a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM661 736h-43.8c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 39.9-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5h-43.9a8 8 0 0 1-8-8.4c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.7 26.4 71.9 72.8 74.7 126.1a8 8 0 0 1-8 8.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneContainer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M635 771.7c-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H232v201h560V687h-97.9c-11.6 32.8-32 62.3-59.1 84.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M320 501h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v201zm0-264H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v488z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneControl (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM340.4 601.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm436.4-499.1c-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1zM340 485V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c41.7-13.5 72-52.8 72-99s-30.3-85.4-72-99V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c-41.7 13.5-72 52.8-72 99s30.3 85.4 72 99zm.1-116c.1-.2.2-.3.3-.5l1.5-2.4c0-.1.1-.1.1-.2l.9-1.2c0-.1.1-.2.2-.3 1-1.2 2.1-2.5 3.2-3.6l.2-.2c.4-.4.8-.7 1.2-1.1.8-.7 1.7-1.4 2.6-2.1h.1l1.2-.9c.1-.1.3-.2.4-.3 1.3-.8 2.6-1.5 3.9-2.2.2-.2.5-.3.7-.4.4-.2.7-.3 1.1-.5.3-.1.7-.3 1-.4.5-.1 1-.3 1.5-.5.4-.1.9-.3 1.3-.4l.9-.3 1.4-.3c.2-.1.5-.1.7-.2.7-.2 1.4-.3 2.1-.4.2-.1.4-.1.6-.1.5-.1 1.1-.2 1.7-.2.3-.1.5-.1.7-.1.8-.1 1.5-.1 2.3-.1s1.5.1 2.3.1c.3.1.5.1.7.1.6.1 1.1.1 1.7.2.2.1.4.1.6.1.7.1 1.4.3 2.1.4.2.1.5.1.7.2l1.4.3.9.3c.4.1.9.3 1.3.4.5.1 1 .3 1.5.5.3.1.7.3 1 .4.4.2.7.3 1.1.5.2.2.5.3.7.4 1.4.6 2.7 1.4 3.9 2.2.1.1.3.2.4.3l1.2.9h.1c.9.6 1.8 1.3 2.6 2.1.4.3.8.7 1.2 1.1l.2.2c1.2 1.1 2.2 2.3 3.2 3.6 0 .1.1.2.2.3l.9 1.2c0 .1.1.1.1.2l1.5 2.4A36.03 36.03 0 0 1 408 584c0 6.1-1.6 11.9-4.3 17-.1.2-.2.3-.3.5l-1.5 2.4c0 .1-.1.1-.1.2l-.9 1.2c0 .1-.1.2-.2.3-1 1.2-2.1 2.5-3.2 3.6l-.2.2c-.4.4-.8.7-1.2 1.1-.8.7-1.7 1.4-2.6 2.1h-.1l-1.2.9c-.1.1-.3.2-.4.3-1.3.8-2.6 1.5-3.9 2.2-.2.2-.5.3-.7.4-.4.2-.7.3-1.1.5-.3.1-.7.3-1 .4-.5.1-1 .3-1.5.5-.4.1-.9.3-1.3.4l-.9.3-1.4.3c-.2.1-.5.1-.7.2-.7.2-1.4.3-2.1.4-.2.1-.4.1-.6.1-.5.1-1.1.2-1.7.2-.3.1-.5.1-.7.1-.8.1-1.5.1-2.3.1s-1.5-.1-2.3-.1c-.3-.1-.5-.1-.7-.1-.6-.1-1.1-.1-1.7-.2-.2-.1-.4-.1-.6-.1-.7-.1-1.4-.3-2.1-.4-.2-.1-.5-.1-.7-.2l-1.4-.3-.9-.3c-.4-.1-.9-.3-1.3-.4-.5-.1-1-.3-1.5-.5-.3-.1-.7-.3-1-.4-.4-.2-.7-.3-1.1-.5-.2-.2-.5-.3-.7-.4-1.4-.6-2.7-1.4-3.9-2.2-.1-.1-.3-.2-.4-.3l-1.2-.9h-.1c-.9-.6-1.8-1.3-2.6-2.1-.4-.3-.8-.7-1.2-1.1l-.2-.2c-1.2-1.1-2.2-2.3-3.2-3.6 0-.1-.1-.2-.2-.3l-.9-1.2c0-.1-.1-.1-.1-.2l-1.5-2.4c-.1-.2-.2-.3-.3-.5-2.7-5-4.3-10.9-4.3-17s1.6-11.9 4.3-17zm280.3-27.9c-.1 0-.2-.1-.4-.1v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-.1 0-.2.1-.4.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1.1 0 .2.1.4.1v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c.1 0 .2-.1.4-.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1zM652 404c19.9 0 36 16.1 36 36s-16.1 36-36 36-36-16.1-36-36 16.1-36 36-36z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M232 706h142c22.1 0 40 17.9 40 40v142h250V264H232v442z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCopyrightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCreditCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M136 792h752V440H136v352zm507-144c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72zM136 232h752v120H136z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M651 728h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V440h752v352zm0-440H136V232h752v120z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M911.9 283.9v.5L835.5 865c-1 8-7.9 14-15.9 14H204.5c-8.1 0-14.9-6.1-16-14l-76.4-580.6v-.6 1.6L188.5 866c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.1-.5.1-1 0-1.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M773.6 810.6l53.9-409.4-139.8 86.1L512 252.9 336.3 487.3l-139.8-86.1 53.8 409.4h523.3zm-374.2-189c0-62.1 50.5-112.6 112.6-112.6s112.6 50.5 112.6 112.6v1c0 62.1-50.5 112.6-112.6 112.6s-112.6-50.5-112.6-112.6v-1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 734.2c61.9 0 112.3-50.2 112.6-112.1v-.5c0-62.1-50.5-112.6-112.6-112.6s-112.6 50.5-112.6 112.6v.5c.3 61.9 50.7 112.1 112.6 112.1zm0-160.9c26.6 0 48.2 21.6 48.2 48.3 0 26.6-21.6 48.3-48.2 48.3s-48.2-21.6-48.2-48.3c0-26.6 21.6-48.3 48.2-48.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6v-.5c.3-6.4-6.7-10.8-12.3-7.4L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.5-3.4-12.6.9-12.2 7.3v.6L188.5 865zm147.8-377.7L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4H250.3l-53.8-409.4 139.8 86.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneCustomerService (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M696 632h128v192H696zm-496 0h128v192H200z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDashboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 188c-99.3 0-192.7 38.7-263 109-70.3 70.2-109 163.6-109 263 0 105.6 44.5 205.5 122.6 276h498.8A371.12 371.12 0 0 0 884 560c0-99.3-38.7-192.7-109-263-70.2-70.3-163.6-109-263-109zm-30 44c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.4l-31.1 31.1a8.03 8.03 0 0 1-11.3 0l-56.6-56.6a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.5l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.2 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 538v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M762.7 340.8l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zM750 538v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zM304.1 309.7a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D8D8D8\",\"d\":\"M232 616h560V408H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 888h560V680H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 344h560V136H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M304 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-544a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDelete (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M292.7 840h438.6l24.2-512h-487z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDiff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M232 264v624h432V413.8L514.2 264H232zm336 489c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-262v42c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M273 100.1v428h.3l-.3-428zM820.4 525l-21.9-19 14-25.5a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-22.4-13.2-42.6-33.6-51.8H345v345.2c18.6 67.2 46.4 168 83.5 302.5a44.28 44.28 0 0 0 42.2 32.3c7.5.1 15-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 605.5 840 587.1 840 568c0-16.5-7.1-32.2-19.6-43z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32zm773.9 358.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273l.3 428 85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zm-74.7 126.1H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3c-37.1-134.4-64.9-235.2-83.5-302.5V172h399.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDollarCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDollar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDownCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm184.4 277.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneDownSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm150-440h46.9c10.3 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEdit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M761.1 288.3L687.8 215 325.1 577.6l-15.6 89 88.9-15.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEnvironment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M724.4 224.9C667.7 169.5 592.3 139 512 139s-155.7 30.5-212.4 85.8C243.1 280 212 353.2 212 431.1c0 241.3 234.1 407.2 300 449.1 65.9-41.9 300-207.8 300-449.1 0-77.9-31.1-151.1-87.6-206.2zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 263c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8S624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEuroCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEuro (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneExclamationCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-32 156c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8zm-24 112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneExperiment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M551.9 513c19.6 0 35.9-14.2 39.3-32.8A40.02 40.02 0 0 1 552 512a40 40 0 0 1-40-39.4v.5c0 22 17.9 39.9 39.9 39.9zM752 687.8l-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-41.2 0-81-9.8-116.7-28L210.5 844h603l-59.9-155.2-1.6-1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M879 824.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.6-107.6.1-.2c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1l.6 1.6L813.5 844h-603z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M552 512c19.3 0 35.4-13.6 39.2-31.8.6-2.7.8-5.4.8-8.2 0-22.1-17.9-40-40-40s-40 17.9-40 40v.6a40 40 0 0 0 40 39.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEyeInvisible (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M254.89,758.85,380.46,633.28A176,176,0,0,1,629.28,384.46L757,256.72Q651.69,186.07,512,186,223.7,186,81.8,486.3a60.3,60.3,0,0,0,0,51.5Q151.07,683.71,254.89,758.85Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M942.2,486.2Q889.46,375.11,816.7,305L672.48,449.27A176.09,176.09,0,0,1,445.26,676.48L323,798.75Q408,838,512,838q288.3,0,430.2-300.3A60.29,60.29,0,0,0,942.2,486.2Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M942.2,486.2Q889.47,375.11,816.7,305l-50.88,50.88C807.31,395.53,843.45,447.4,874.7,512,791.5,684.2,673.4,766,512,766q-72.67,0-133.87-22.38L323,798.75Q408,838,512,838q288.3,0,430.2-300.3A60.29,60.29,0,0,0,942.2,486.2Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M878.63,165.56,836,122.88a8,8,0,0,0-11.32,0L715.31,232.2Q624.86,186,512,186,223.7,186,81.8,486.3a60.3,60.3,0,0,0,0,51.5q56.69,119.4,136.5,191.41L112.48,835a8,8,0,0,0,0,11.31L155.17,889a8,8,0,0,0,11.31,0L878.63,176.88A8,8,0,0,0,878.63,165.56ZM149.3,512C232.6,339.8,350.7,258,512,258c54.54,0,104.13,9.36,149.12,28.39l-70.3,70.3A176,176,0,0,0,352.69,594.82l-83.42,83.42C223.1,637.49,183.3,582.28,149.3,512ZM396,512A112.11,112.11,0,0,1,542.2,405.31L401.31,546.2A112,112,0,0,1,396,512Z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508,624c-3.46,0-6.87-.16-10.25-.47l-52.82,52.82A176.09,176.09,0,0,0,672.35,448.93l-52.82,52.82c.31,3.38.47,6.79.47,10.25A111.94,111.94,0,0,1,508,624Z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneEye (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M81.8 537.8a60.3 60.3 0 0 1 0-51.5C176.6 286.5 319.8 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c-192.1 0-335.4-100.5-430.2-300.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 258c-161.3 0-279.4 81.8-362.7 254C232.6 684.2 350.7 766 512 766c161.4 0 279.5-81.8 362.7-254C791.4 339.8 673.3 258 512 258zm-4 430c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258s279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508 336c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm126 236v48c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V644H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V472c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileExcel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm51.6 120h35.7a12.04 12.04 0 0 1 10.1 18.5L546.1 623l84 130.4c3.6 5.6 2 13-3.6 16.6-2 1.2-4.2 1.9-6.5 1.9h-37.5c-4.1 0-8-2.1-10.2-5.7L510 664.8l-62.7 101.5c-2.2 3.5-6 5.7-10.2 5.7h-34.5a12.04 12.04 0 0 1-10.2-18.4l83.4-132.8-82.3-130.4c-3.6-5.7-1.9-13.1 3.7-16.6 1.9-1.3 4.1-1.9 6.4-1.9H442c4.2 0 8.1 2.2 10.3 5.8l61.8 102.4 61.2-102.3c2.2-3.6 6.1-5.8 10.3-5.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileExclamation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-54 96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V448zm32 336c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M488 640h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm-16 104a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-134 50c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328.1c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8.1 8.1 0 0 1 12.7 0l136.5 174c4.1 5.2.4 12.9-6.3 12.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileMarkdown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm72.3 122H641c6.6 0 12 5.4 12 12v272c0 6.6-5.4 12-12 12h-27.2c-6.6 0-12-5.4-12-12V581.7L535 732.3c-2 4.3-6.3 7.1-11 7.1h-24.1a12 12 0 0 1-11-7.1l-66.8-150.2V758c0 6.6-5.4 12-12 12H383c-6.6 0-12-5.4-12-12V486c0-6.6 5.4-12 12-12h35c4.8 0 9.1 2.8 11 7.2l83.2 191 83.1-191c1.9-4.4 6.2-7.2 11-7.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFilePdf (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M509.2 490.8c-.7-1.3-1.4-1.9-2.2-2-2.9 3.3-2.2 31.5 2.7 51.4 4-13.6 4.7-40.5-.5-49.4zm-1.6 120.5c-7.7 20-18.8 47.3-32.1 71.4 4-1.6 8.1-3.3 12.3-5 17.6-7.2 37.3-15.3 58.9-20.2-14.9-11.8-28.4-27.7-39.1-46.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm55 287.6c16.1-1.9 30.6-2.8 44.3-2.3 12.8.4 23.6 2 32 5.1.2.1.3.1.5.2.4.2.8.3 1.2.5.5.2 1.1.4 1.6.7.1.1.3.1.4.2 4.1 1.8 7.5 4 10.1 6.6 9.1 9.1 11.8 26.1 6.2 39.6-3.2 7.7-11.7 20.5-33.3 20.5-21.8 0-53.9-9.7-82.1-24.8-25.5 4.3-53.7 13.9-80.9 23.1-5.8 2-11.8 4-17.6 5.9-38 65.2-66.5 79.4-84.1 79.4-4.2 0-7.8-.9-10.8-2-6.9-2.6-12.8-8-16.5-15-.9-1.7-1.6-3.4-2.2-5.2-1.6-4.8-2.1-9.6-1.3-13.6l.6-2.7c.1-.2.1-.4.2-.6.2-.7.4-1.4.7-2.1 0-.1.1-.2.1-.3 4.1-11.9 13.6-23.4 27.7-34.6 12.3-9.8 27.1-18.7 45.9-28.4 15.9-28 37.6-75.1 51.2-107.4-10.8-41.8-16.7-74.6-10.1-98.6.9-3.3 2.5-6.4 4.6-9.1.2-.2.3-.4.5-.6.1-.1.1-.2.2-.2 6.3-7.5 16.9-11.9 28.1-11.5 16.6.7 29.7 11.5 33 30.1 1.7 8 2.2 16.5 1.9 25.7v.7c0 .5 0 1-.1 1.5-.7 13.3-3 26.6-7.3 44.7-.4 1.6-.8 3.2-1.2 5.2l-1 4.1-.1.3c.1.2.1.3.2.5l1.8 4.5c.1.3.3.7.4 1 .7 1.6 1.4 3.3 2.1 4.8v.1c8.7 18.8 19.7 33.4 33.9 45.1 4.3 3.5 8.9 6.7 13.9 9.8 1.8-.5 3.5-.7 5.3-.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M391.5 761c5.7-4.4 16.2-14.5 30.1-34.7-10.3 9.4-23.4 22.4-30.1 34.7zm270.9-83l.2-.3h.2c.6-.4.5-.7.4-.9-.1-.1-4.5-9.3-45.1-7.4 35.3 13.9 43.5 9.1 44.3 8.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M535.9 585.3c-.8-1.7-1.5-3.3-2.2-4.9-.1-.3-.3-.7-.4-1l-1.8-4.5c-.1-.2-.1-.3-.2-.5l.1-.3.2-1.1c4-16.3 8.6-35.3 9.4-54.4v-.7c.3-8.6-.2-17.2-2-25.6-3.8-21.3-19.5-29.6-32.9-30.2-11.3-.5-21.8 4-28.1 11.4-.1.1-.1.2-.2.2-.2.2-.4.4-.5.6-2.1 2.7-3.7 5.8-4.6 9.1-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.4-51.2 107.4v.1c-27.7 14.3-64.1 35.8-73.6 62.9 0 .1-.1.2-.1.3-.2.7-.5 1.4-.7 2.1-.1.2-.1.4-.2.6-.2.9-.5 1.8-.6 2.7-.9 4-.4 8.8 1.3 13.6.6 1.8 1.3 3.5 2.2 5.2 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-2.6-2.6-6-4.8-10.1-6.6-.1-.1-.3-.1-.4-.2-.5-.2-1.1-.4-1.6-.7-.4-.2-.8-.3-1.2-.5-.2-.1-.3-.1-.5-.2-16.2-5.8-41.7-6.7-76.3-2.8l-5.3.6c-5-3-9.6-6.3-13.9-9.8-14.2-11.3-25.1-25.8-33.8-44.7zM391.5 761c6.7-12.3 19.8-25.3 30.1-34.7-13.9 20.2-24.4 30.3-30.1 34.7zM507 488.8c.8.1 1.5.7 2.2 2 5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4zm-19.2 188.9c-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4 10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2zm175.4-.9c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFilePpt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M464.5 516.2v108.4h38.9c44.7 0 71.2-10.9 71.2-54.3 0-34.4-20.1-54.1-53.9-54.1h-56.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm90 218.4c0 55.2-36.8 94.1-96.2 94.1h-63.3V760c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V484c0-4.4 3.6-8 8-8v.1h104c59.7 0 96 39.8 96 94.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M424 476.1c-4.4-.1-8 3.5-8 7.9v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.2c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileText (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 322c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm200-184v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8zm192 128H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileUnknown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 424c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm110-228.4c.7 44.9-29.7 84.5-74.3 98.9-5.7 1.8-9.7 7.3-9.7 13.3V672c0 5.5-4.5 10-10 10h-32c-5.5 0-10-4.5-10-10v-32c.2-19.8 15.4-37.3 34.7-40.1C549 596.2 570 574.3 570 549c0-28.1-25.8-51.5-58-51.5s-58 23.4-58 51.6c0 5.2-4.4 9.4-9.8 9.4h-32.4c-5.4 0-9.8-4.1-9.8-9.5 0-57.4 50.1-103.7 111.5-103 59.3.8 107.7 46.1 108.5 101.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M480 744a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm-78-195c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileWord (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0 1 11.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0 1 11.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFileZip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M344 630h32v2h-32z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H360v64h64v64h-64v64h64v64h-64v64h64v64h-64v62h64v160H296V520h64v-64h-64v-64h64v-64h-64v-64h64v-64h-64v-64h-64v752h560V394H576a42 42 0 0 1-42-42z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M296 392h64v64h-64zm0-128h64v64h-64zm0 318v160h128V582h-64v-62h-64v62zm48 50v-2h32v64h-32v-62zm16-432h64v64h-64zm0 256h64v64h-64zm0-128h64v64h-64z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M420.6 798h182.9V642H420.6zM411 561.4l9.5 16.6h183l9.5-16.6L811.3 226H212.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V642h182.9v156zm9.5-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFire (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M737 438.6c-9.6 15.5-21.1 30.7-34.4 45.6a73.1 73.1 0 0 1-51 24.4 73.36 73.36 0 0 1-53.4-18.8 74.01 74.01 0 0 1-24.4-59.8c3-47.4-12.4-103.1-45.8-165.7-16.9-31.4-37.1-58.2-61.2-80.4a240 240 0 0 1-12.1 46.5 354.26 354.26 0 0 1-58.2 101 349.6 349.6 0 0 1-58.6 56.8c-34 26.1-62 60-80.8 97.9a275.96 275.96 0 0 0-29.1 124c0 74.9 29.5 145.3 83 198.4 53.7 53.2 125 82.4 201 82.4s147.3-29.2 201-82.4c53.5-53 83-123.5 83-198.4 0-39.2-8.1-77.3-24-113.1-9.3-21-21-40.5-35-58.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFlag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M184 232h368v336H184z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M624 632c0 4.4-3.6 8-8 8H504v73h336V377H624v255z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFolderAdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M372.5 256H184v512h656V370.4H492.1L372.5 256zM540 443.1V528h84.5c4.1 0 7.5 3.1 7.5 7v42c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFolderOpen (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M159 768h612.3l103.4-256H262.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M372.5 256H184v512h656V370.4H492.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFrown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm224 112c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4 3.7-49.5 45.3-88.6 95.8-88.6s92 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533zm128-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFund (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M136 792h752V232H136v560zm56.4-130.5l214.9-215c3.1-3.1 8.2-3.1 11.3 0L533 561l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.1 3.1 3.1 8.2 0 11.3l-297 297.2a8.03 8.03 0 0 1-11.3 0L412.9 537.2 240.4 709.7a8.03 8.03 0 0 1-11.3 0l-36.7-36.9a8.03 8.03 0 0 1 0-11.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M229.1 709.7c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L533 561 418.6 446.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneFunnelPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M420.6 798h182.9V650H420.6zM297.7 374h428.6l85-148H212.7zm113.2 197.4l8.4 14.6h185.3l8.4-14.6L689.6 438H334.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V650h182.9v148zm9.5-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneGift (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M546 378h298v104H546zM228 550h250v308H228zm-48-172h298v104H180zm366 172h250v308H546z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zM478 858H228V550h250v308zm0-376H180V378h298v104zm0-176h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm68-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm250 622H546V550h250v308zm48-376H546V378h298v104z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneGold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M435.7 558.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M592.7 276H433.2l-20.8 128h201zM217.2 620l-20.7 128h200.9l-20.7-128zm430 0l-20.7 128h200.9l-20.7-128z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHdd (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M232 888h560V680H232v208zm448-140c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 616h560V408H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48zm-72-144h560V136H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-272h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 516a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHeart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHighlight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M229.6 796.3h160.2l54.3-54.1-80.1-78.9zm220.7-397.1l262.8 258.9 147.3-145-262.8-259zm-77.1 166.1l171.4 168.9 68.6-67.6-171.4-168.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M957.6 507.5L603.2 158.3a7.9 7.9 0 0 0-11.2 0L353.3 393.5a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8v55.2c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6L539 830a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.3H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.3l68.6-67.6 171.4 168.9-68.6 67.6zm168.5-76.1L450.3 399.2l147.3-145.1 262.8 259-147.3 145z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512.1 172.6l-370 369.7h96V868H392V640c0-22.1 17.9-40 40-40h160c22.1 0 40 17.9 40 40v228h153.9V542.3H882L535.2 195.7l-23.1-23.1zm434.5 422.9c-6 6-13.1 10.8-20.8 13.9 7.7-3.2 14.8-7.9 20.8-13.9zm-887-34.7c5 30.3 31.4 53.5 63.1 53.5h.9c-31.9 0-58.9-23-64-53.5zm-.9-10.5v-1.9 1.9zm.1-2.6c.1-3.1.5-6.1 1-9.1-.6 2.9-.9 6-1 9.1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M951 510c0-.1-.1-.1-.1-.2l-1.8-2.1c-.1-.1-.2-.3-.4-.4-.7-.8-1.5-1.6-2.2-2.4L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.6 63.6 0 0 0-16 26.6l-.6 2.1-.3 1.1-.3 1.2c-.2.7-.3 1.4-.4 2.1 0 .1 0 .3-.1.4-.6 3-.9 6-1 9.1v3.3c0 .5 0 1 .1 1.5 0 .5 0 .9.1 1.4 0 .5.1 1 .1 1.5 0 .6.1 1.2.2 1.8 0 .3.1.6.1.9l.3 2.5v.1c5.1 30.5 32.2 53.5 64 53.5h42.5V940h691.7V614.3h43.4c8.6 0 16.9-1.7 24.5-4.9s14.7-7.9 20.8-13.9a63.6 63.6 0 0 0 18.7-45.3c0-14.7-5-28.8-14.3-40.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHourglass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 548c-42.2 0-81.9 16.4-111.7 46.3A156.63 156.63 0 0 0 354 706v134h316V706c0-42.2-16.4-81.9-46.3-111.7A156.63 156.63 0 0 0 512 548zM354 318c0 42.2 16.4 81.9 46.3 111.7C430.1 459.6 469.8 476 512 476s81.9-16.4 111.7-46.3C653.6 399.9 670 360.2 670 318V184H354v134z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneHtml5 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M209.9 155.4l56.7 641.2 245.2 69.6 244.1-69.6 57.8-641.2H209.9zm530.4 117.9l-4.8 47.2-1.7 19.5H381.7l8.2 94.2H511v-.2h214.7l-3.2 24.3-21.2 242.2-1.7 16.3-187.7 51.7v.4h-1.7l-188.6-52-11.3-144.7h91l6.5 73.2 102.4 27.7h.8v-.2l102.4-27.7 11.4-118.5H511.9v.1H305.4l-22.7-253.5L281 249h461l-1.7 24.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneIdcard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M136 792h752V232H136v560zm472-372c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm0 144c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48zM216.2 664.6c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.6 26.4 71.8 72.8 74.6 126.1a8 8 0 0 1-8 8.4h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224c-4.6 0-8.2-3.8-7.8-8.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M321.3 463a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneInfoCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm32 588c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneInsurance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M521.9 358.8h97.9v41.6h-97.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM413.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm257.9-340v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a6.38 6.38 0 0 1-4.8 1.4c-1.7-.3-3.2-1.3-4.1-2.8L432 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M443.7 306.9l-38.6-18.3c-3.4-1.6-7.3.2-8.4 3.7-17.5 58.5-45.2 110.2-82.2 153.6a5.7 5.7 0 0 0-1.2 5.6l13.2 43.5c1.4 4.5 7 5.8 10.2 2.4 7.7-8.1 15.4-16.8 23.1-26V656c0 4.4 3.6 8 8 8h37.3c4.4 0 8-3.6 8-8h.2V393.1a429.2 429.2 0 0 0 33.6-79c.9-2.8-.5-5.9-3.2-7.2zm26.8 9.1v127.4c0 4.4 3.6 8 8 8h65.9V470h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c.9 1.5 2.4 2.5 4.1 2.8 1.7.3 3.5-.2 4.8-1.4 31.6-26.8 58.6-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V535.9c21.3 41.7 47.5 77.6 78.1 106.9 2.6 2.5 6.7 2.2 8.9-.7l26.3-35.3c2-2.6 1.4-6.4-1.2-8.5-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H478.5c-4.4 0-8 3.6-8 8zm51.4 42.8h97.9v41.6h-97.9v-41.6z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneInteraction (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneLayout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M384 185h456v136H384zm-200 0h136v656H184zm696-73H144c-17.7 0-32 14.3-32 32v1c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32v-1c0-17.7-14.3-32-32-32zM384 385h456v456H384z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 113H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V145c0-17.7-14.3-32-32-32zM320 841H184V185h136v656zm520 0H384V385h456v456zm0-520H384V185h456v136z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneLeftCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm104 240.9c0 10.3-4.9 19.9-13.2 25.9L457.4 512l145.4 105.1c8.3 6 13.2 15.7 13.2 25.9v46.9c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneLeftSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm181.3-334.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.3-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.7 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.4l-246-178a7.95 7.95 0 0 1 0-12.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M365.3 518.4l246 178c5.3 3.9 12.7.1 12.7-6.4v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a7.95 7.95 0 0 0 0 12.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M273 495.9v428l.3-428zm538.2-88.3H496.8l9.6-198.4c.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6.1-36.9 13.4-42.2 32.3-37.1 134.4-64.9 235.2-83.5 302.5V852h399.4a56.85 56.85 0 0 0 33.6-51.8c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19a56.76 56.76 0 0 0 19.6-43c0-19.1-11-37.5-28.8-48.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32zm773.9 5.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.5-65.5-111a67.67 67.67 0 0 0-34.3-9.3H572.3l6-122.9c1.5-29.7-9-57.9-29.5-79.4a106.4 106.4 0 0 0-77.9-33.4c-52 0-98 35-111.8 85.1l-85.8 310.8-.3 428h472.1c9.3 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37zM820.4 499l-21.9 19 14 25.5a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H345V506.8c18.6-67.2 46.4-168 83.5-302.5a44.28 44.28 0 0 1 42.2-32.3c7.5-.1 15 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.1 32.2-19.6 43z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M477.5 536.3L135.9 270.7l-27.5-21.4 27.6 21.5V792h752V270.8L546.2 536.3a55.99 55.99 0 0 1-68.7 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M876.3 198.8l39.3 50.5-27.6 21.5 27.7-21.5-39.3-50.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-94.5 72.1L512 482 190.5 232.1h643zm54.5 38.7V792H136V270.8l-27.6-21.5 27.5 21.4 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5h.1l39.3 50.5-27.7 21.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMedicineBox (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M244.3 328L184 513.4V840h656V513.4L779.7 328H244.3zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMeh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 144H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-24-144a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMessage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D8D8D8\",\"d\":\"M775.3 248.9a369.62 369.62 0 0 0-119-80A370.2 370.2 0 0 0 512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 0 0-80-119zM312 560a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M664 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMinusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMinusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMobile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M744 64H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H288V136h448v752z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M288 888h448V136H288v752zm224-142c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M472 786a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneMoneyCollect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M256 744.4l256 93.1 256-93.1V184H256v560.4zM359.7 313c1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 485.2h3.3L599 316.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8L564 515.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V704c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 323.8c-2.1-3.8-.7-8.7 3.2-10.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM768 744.4l-256 93.1-256-93.1V184h512v560.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M460.4 515.4h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneNotification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M229.6 678.1c-3.7 11.6-5.6 23.9-5.6 36.4 0-12.5 2-24.8 5.7-36.4h-.1zm76.3-260.2H184v188.2h121.9l12.9 5.2L840 820.7V203.3L318.8 412.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePauseCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M721.7 184.9L610.9 295.8l120.8 120.7-8 21.6A481.29 481.29 0 0 1 438 723.9l-21.6 8-.9-.9-119.8-120-110.8 110.9 104.5 104.5c10.8 10.7 26 15.7 40.8 13.2 117.9-19.5 235.4-82.9 330.9-178.4s158.9-213.1 178.4-331c2.5-14.8-2.5-30-13.3-40.8L721.7 184.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePicture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 1 1 0 176 88 88 0 0 1 0-176z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M276 368a28 28 0 1 0 56 0 28 28 0 1 0-56 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M316.2 920.5c-47.6-20.1-90.4-49-127.1-85.7a398.19 398.19 0 0 1-85.7-127.1A397.12 397.12 0 0 1 72 552.2v.2a398.57 398.57 0 0 0 117 282.5c36.7 36.7 79.4 65.5 127 85.6A396.64 396.64 0 0 0 471.6 952c27 0 53.6-2.7 79.7-7.9-25.9 5.2-52.4 7.8-79.3 7.8-54 .1-106.4-10.5-155.8-31.4zM560 472c-4.4 0-8-3.6-8-8V79.9c0-1.3.3-2.5.9-3.6-.9 1.3-1.5 2.9-1.5 4.6v383.7c0 4.4 3.6 8 8 8l383.6-1c1.6 0 3.1-.5 4.4-1.3-1 .5-2.2.7-3.4.7l-384 1z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M619.8 147.6v256.6l256.4-.7c-13-62.5-44.3-120.5-90-166.1a332.24 332.24 0 0 0-166.4-89.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M438 221.7c-75.9 7.6-146.2 40.9-200.8 95.5C174.5 379.9 140 463.3 140 552s34.5 172.1 97.2 234.8c62.3 62.3 145.1 96.8 233.2 97.2 88.2.4 172.7-34.1 235.3-96.2C761 733 794.6 662.3 802.3 586H438V221.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552v.2c0 53.9 10.6 106.2 31.4 155.5 20.1 47.6 49 90.4 85.7 127.1 36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952c26.9 0 53.4-2.6 79.3-7.8 26.1-5.3 51.7-13.1 76.4-23.6 47.6-20.1 90.4-49 127.1-85.7 36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552s34.5-172.1 97.2-234.8c54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-3.4-.3-6.4 1.5-7.8 4.3a8.7 8.7 0 0 0-.9 3.6V464c0 4.4 3.6 8 8 8l384-1c1.2 0 2.3-.3 3.4-.7a8.1 8.1 0 0 0 4.6-7.9zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePlayCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 0 1-12.7-6.5V353a8 8 0 0 1 12.7-6.5l218.4 158.8a7.9 7.9 0 0 1 0 12.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M676.1 505.3L457.7 346.5A8 8 0 0 0 445 353v317.6a8.02 8.02 0 0 0 12.7 6.5l218.4-158.9a7.9 7.9 0 0 0 0-12.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePlaySquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm240-484.7c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M442.3 677.6l199.4-156.8a11.2 11.2 0 0 0 0-17.6L442.3 346.5c-7.4-5.9-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.6 18.3 8.8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePlusCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePlusSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePoundCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm146 582.1c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8v39.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M650 674.3H470v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.8-5.3-41h98.6c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-112c-7.2-22.6-13.4-45.8-13.4-70.5 0-43.6 34-70.2 87.3-70.2 21.4 0 42.5 4.1 60.4 10.5a8 8 0 0 0 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.9-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.4 6.8 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.2c3.4 14.8 5.9 29.5 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8v38.5c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePrinter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M360 180h304v152H360zm492 220H172c-6.6 0-12 5.4-12 12v292h132V500h440v204h132V412c0-6.6-5.4-12-12-12zm-24 84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M852 332H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneProfile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm300-496c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zM380 328c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M340 656a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm152 320h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneProject (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm472-560c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePropertySafety (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM593.9 318h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3L585 323.5a10 10 0 0 1 8.9-5.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M438.9 323.5a9.88 9.88 0 0 0-8.9-5.5h-46c-1.7 0-3.3.4-4.8 1.2-4.9 2.7-6.6 8.8-4 13.6l88 161.1H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1c.8-1.5 1.2-3.1 1.1-4.8 0-5.5-4.5-10-10-10h-45a10 10 0 0 0-8.9 5.5l-73.2 144.3-72.9-144.3z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotonePushpin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M474.8 357.7l-24.5 24.5-34.4-3.8c-9.6-1.1-19.3-1.6-28.9-1.6-29 0-57.5 4.7-84.7 14.1-14 4.8-27.4 10.8-40.3 17.9l353.1 353.3a259.92 259.92 0 0 0 30.4-153.9l-3.8-34.4 24.5-24.5L800 415.5 608.5 224 474.8 357.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneQuestionCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneReconciliation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M740 344H404V240H304v160h176c17.7 0 32 14.3 32 32v360h328V240H740v104zM584 448c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56zm92 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-341v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M642 657a34 34 0 1 0 68 0 34 34 0 1 0-68 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm112-104v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 168H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneRedEnvelope (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M492.3 397.2L232 193.1V888h560V193.1L531.8 397.2a31.99 31.99 0 0 1-39.5 0zm99.4 60.9h47.8a8.45 8.45 0 0 1 7.4 12.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4V665c0 4.6-3.8 8.4-8.4 8.4h-63.3V702h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.7-3.5 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4L377 470.4a8.4 8.4 0 0 1 3.4-11.4c1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.7 142 71.9-141.9a8.6 8.6 0 0 1 7.5-4.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M232 136.7h31.7L512 331.3l248.3-194.6H792v-.7H232z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneRest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M326.4 844h363.2l44.3-520H282l44.4 520zM508 416c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneRightCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm154.7 378.4l-246 178c-5.3 3.8-12.7 0-12.7-6.5V643c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M666.7 505.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L566.6 512 421.2 617.1c-8.3 6-13.2 15.7-13.2 25.9v46.9c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.7 0-12.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneRightSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm216-196.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.9-12.7.1-12.7-6.4v-46.9z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M412.7 696.4l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.7-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneRocket (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M261.7 621.4c-9.4 14.6-17 30.3-22.5 46.6H324V558.7c-24.8 16.2-46 37.5-62.3 62.7zM700 558.7V668h84.8c-5.5-16.3-13.1-32-22.5-46.6a211.6 211.6 0 0 0-62.3-62.7zm-64-239.9l-124-147-124 147V668h248V318.8zM512 448a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zm-540-68h-84.8c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668zm64-184.9V318.8l124-147 124 147V668H388V483.1zm240.1 301.1c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM700 668V558.7a211.6 211.6 0 0 1 62.3 62.7c9.4 14.6 17 30.3 22.5 46.6H700z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSafetyCertificate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM632.8 328H688c6.5 0 10.3 7.4 6.5 12.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89.1 150.9-207.8c3-4.1 7.9-6.6 13-6.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M404.2 453.3c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M704 320c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V184H184v656h656V341.8l-136-136V320zM512 730c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M893.3 293.3L730.7 130.7c-.7-.7-1.4-1.3-2.1-2-.1-.1-.3-.2-.4-.3-.7-.7-1.5-1.3-2.2-1.9a64 64 0 0 0-22-11.7V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSchedule (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.4-91.2l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.3c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.4 12.9 6.6l52.8 73.1 103.6-143.7c3-4.1 7.8-6.6 12.8-6.5h54.9c6.5 0 10.3 7.4 6.5 12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M724.2 454.6L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M416 632H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSecurityScan (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M460.7 451.1a80.1 80.1 0 1 0 160.2 0 80.1 80.1 0 1 0-160.2 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zm428.7 122.5c56.3 56.3 56.3 147.5 0 203.8-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M418.8 527.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.6 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 122.9-20.1 178.6zm65.4-133.3a80.1 80.1 0 0 1 113.3 0 80.1 80.1 0 0 1 0 113.3c-31.3 31.3-82 31.3-113.3 0s-31.3-82 0-113.3z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSetting (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M859.3 569.7l.2.1c3.1-18.9 4.6-38.2 4.6-57.3 0-17.1-1.3-34.3-3.7-51.1 2.4 16.7 3.6 33.6 3.6 50.5 0 19.4-1.6 38.8-4.7 57.8zM99 398.1c-.5-.4-.9-.8-1.4-1.3.7.7 1.4 1.4 2.2 2.1l65.5 55.9v-.1L99 398.1zm536.6-216h.1l-15.5-83.8c-.2-1-.4-1.9-.7-2.8.1.5.3 1.1.4 1.6l15.7 85zm54 546.5l31.4-25.8 92.8 32.9c17-22.9 31.3-47.5 42.6-73.6l-74.7-63.9 6.6-40.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.5-39.9 74.7-63.9c-11.4-26-25.6-50.7-42.6-73.6l-92.8 32.9-31.4-25.8c-23.9-19.6-50.6-35-79.3-45.8l-38.1-14.3-17.9-97a377.5 377.5 0 0 0-85 0l-17.9 97.2-37.9 14.3c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.3 47.5-42.6 73.6l75.5 64.5-6.5 40c-2.5 14.9-3.7 30.2-3.7 45.5 0 15.2 1.3 30.6 3.7 45.5l6.5 40-75.5 64.5c11.4 26 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.8 14.5 17.9 97.2c28.2 3.2 56.9 3.2 85 0l17.9-97 38.1-14.3c28.8-10.8 55.4-26.2 79.3-45.8zm-177.1-50.3c-30.5 0-59.2-7.8-84.3-21.5C373.3 627 336 568.9 336 502c0-97.2 78.8-176 176-176 66.9 0 125 37.3 154.8 92.2 13.7 25 21.5 53.7 21.5 84.3 0 97.1-78.7 175.8-175.8 175.8zM207.2 812.8c-5.5 1.9-11.2 2.3-16.6 1.2 5.7 1.2 11.7 1 17.5-1l81.4-29c-.1-.1-.3-.2-.4-.3l-81.9 29.1zm717.6-414.7l-65.5 56c0 .2.1.5.1.7l65.4-55.9c7.1-6.1 11.1-14.9 11.2-24-.3 8.8-4.3 17.3-11.2 23.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M935.8 646.6c.5 4.7 0 9.5-1.7 14.1l-.9 2.6a446.02 446.02 0 0 1-79.7 137.9l-1.8 2.1a32 32 0 0 1-35.1 9.5l-81.3-28.9a350 350 0 0 1-99.7 57.6l-15.7 85a32.05 32.05 0 0 1-25.8 25.7l-2.7.5a445.2 445.2 0 0 1-79.2 7.1h.3c26.7 0 53.4-2.4 79.4-7.1l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c1.6-4.7 2.1-9.7 1.5-14.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M688 502c0-30.3-7.7-58.9-21.2-83.8C637 363.3 578.9 326 512 326c-97.2 0-176 78.8-176 176 0 66.9 37.3 125 92.2 154.8 24.9 13.5 53.4 21.2 83.8 21.2 97.2 0 176-78.8 176-176zm-288 0c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M594.1 952.2a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c1.7-4.6 2.2-9.4 1.7-14.1-.9-7.9-4.7-15.4-11-20.9l-65.3-55.9-.2-.1c3.1-19 4.7-38.4 4.7-57.8 0-16.9-1.2-33.9-3.6-50.5-.3-2.2-.7-4.4-1-6.6 0-.2-.1-.5-.1-.7l65.5-56c6.9-5.9 10.9-14.4 11.2-23.2.1-4-.5-8.1-1.9-12l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.4-44-99.6-57.6h-.1l-15.7-85c-.1-.5-.2-1.1-.4-1.6a32.08 32.08 0 0 0-25.4-24.1l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6a32.09 32.09 0 0 0 7.9 33.9c.5.4.9.9 1.4 1.3l66.3 56.6v.1c-3.1 18.8-4.6 37.9-4.6 57 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c4.9 5.7 11.4 9.4 18.5 10.7 5.4 1 11.1.7 16.6-1.2l81.9-29.1c.1.1.3.2.4.3 29.7 24.3 62.8 43.6 98.6 57.1l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5c26.1 4.7 52.8 7.1 79.5 7.1h.3c26.6 0 53.3-2.4 79.2-7.1l2.7-.5zm-39.8-66.5a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneShop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M839.5 344h-655c-.3 0-.5.2-.5.5v91.2c0 59.8 49 108.3 109.3 108.3 40.7 0 76.2-22 95.1-54.7 2.9-5.1 8.4-8.3 14.3-8.3s11.3 3.2 14.3 8.3c18.8 32.7 54.3 54.7 95 54.7 40.8 0 76.4-22.1 95.1-54.9 2.9-5 8.2-8.1 13.9-8.1h.6c5.8 0 11 3.1 13.9 8.1 18.8 32.8 54.4 54.9 95.2 54.9C791 544 840 495.5 840 435.7v-91.2c0-.3-.2-.5-.5-.5z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234.4 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c3-1.3 6-2.6 9-4v242.2zM840 435.7c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneShopping (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M696 472c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88H400v88c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88h-96v456h560V384h-96v88z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSkin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512 318c-79.2 0-148.5-48.8-176.7-120H182v196h119v432h422V394h119V198H688.7c-28.2 71.2-97.5 120-176.7 120z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSliders (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M180 292h80v440h-80zm369 180h-74a3 3 0 0 0-3 3v74a3 3 0 0 0 3 3h74a3 3 0 0 0 3-3v-74a3 3 0 0 0-3-3zm215-108h80v296h-80z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74zM320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSmile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4zm-24-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSnippets (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M450 510V336H232v552h432V550H490c-22.1 0-40-17.9-40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSound (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M275.4 424H146v176h129.4l18 11.7L586 803V221L293.3 412.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM934 476H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneStar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M512.5 190.4l-94.4 191.3-211.2 30.7 152.8 149-36.1 210.3 188.9-99.3 188.9 99.2-36.1-210.3 152.8-148.9-211.2-30.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M908.6 352.8l-253.9-36.9L541.2 85.8c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L370.3 315.9l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1L239 839.4a31.95 31.95 0 0 0 46.4 33.7l227.1-119.4 227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM665.3 561.3l36.1 210.3-188.9-99.2-188.9 99.3 36.1-210.3-152.8-149 211.2-30.7 94.4-191.3 94.4 191.3 211.2 30.7-152.8 148.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneStop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm288.5 682.8L277.7 224C258 240 240 258 224 277.7l522.8 522.8C682.8 852.7 601 884 512 884c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372c0 89-31.3 170.8-83.5 234.8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372c89 0 170.8-31.3 234.8-83.5L224 277.7c16-19.7 34-37.7 53.7-53.7l522.8 522.8C852.7 682.8 884 601 884 512c0-205.4-166.6-372-372-372z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneSwitcher (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M184 840h528V312H184v528zm116-290h296v64H300v-64z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M880 112H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M300 550h296v64H300z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTablet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M232 888h560V136H232v752zm280-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTag (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M589 164.6L189.3 564.3l270.4 270.4L859.4 435 836 188l-247-23.4zM680 432c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8a9.9 9.9 0 0 0 7.1 2.9c2.7 0 5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTags (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M477.5 694l311.9-311.8-19-224.6-224.6-19-311.9 311.9L477.5 694zm116-415.5a47.81 47.81 0 0 1 33.9-33.9c16.6-4.4 34.2.3 46.4 12.4a47.93 47.93 0 0 1 12.4 46.4 47.81 47.81 0 0 1-33.9 33.9c-16.6 4.4-34.2-.3-46.4-12.4a48.3 48.3 0 0 1-12.4-46.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M476.6 792.6c-1.7-.2-3.4-1-4.7-2.3L137.7 456.1a8.03 8.03 0 0 1 0-11.3L515.9 66.6c1.2-1.3 2.9-2.1 4.7-2.3h-.4c-2.3-.2-4.7.6-6.3 2.3L135.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.8 1.9 4.3 2.6 6.7 2.3z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3zM652.3 337.3a47.81 47.81 0 0 0 33.9-33.9c4.4-16.6-.3-34.2-12.4-46.4a47.93 47.93 0 0 0-46.4-12.4 47.81 47.81 0 0 0-33.9 33.9c-4.4 16.6.3 34.2 12.4 46.4a48.3 48.3 0 0 0 46.4 12.4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.3 1.3 2.9 2.1 4.7 2.3 2.4.3 4.8-.5 6.6-2.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3h-1.6c-1.8.2-3.4 1-4.7 2.3L137.7 444.8zm408.1-306.2l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneThunderbolt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M695.4 164.1H470.8L281.2 491.5h157.4l-60.3 241 319.8-305.1h-211z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M848.1 359.3H627.8L825.9 109c4.1-5.3.4-13-6.3-13H436.1c-2.8 0-5.5 1.5-6.9 4L170.1 547.5c-3.1 5.3.7 12 6.9 12h174.4L262 917.1c-1.9 7.8 7.5 13.3 13.3 7.7L853.6 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.3 732.5l60.3-241H281.2l189.6-327.4h224.6L487.1 427.4h211L378.3 732.5z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTool (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M706.8 488.7a32.05 32.05 0 0 1-45.3 0L537 364.2a32.05 32.05 0 0 1 0-45.3l132.9-132.8a184.2 184.2 0 0 0-144 53.5c-58.1 58.1-69.3 145.3-33.6 214.6L439.5 507c-.1 0-.1-.1-.1-.1L209.3 737l79.2 79.2 274-274.1.1.1 8.8-8.8c69.3 35.7 156.5 24.5 214.6-33.6 39.2-39.1 57.3-92.1 53.6-143.9L706.8 488.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTrademarkCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm170.7 584.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H384c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M529.9 357h-83.4v148H528c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M605.4 549.3c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.4-131.1-144.2-131.1H384c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.7c4.4 0 8-3.6 8-8V561.2h88.7L610 720.4c1.3 2.8 4.1 4.6 7.2 4.6h62c1.2 0 2.4-.3 3.5-.8 3.9-2 5.6-6.8 3.5-10.7l-80.8-164.2zM528 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.6 0 46.8-29.8 72.4-82.8 72.4z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneTrophy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M320 480c0 49.1 19.1 95.3 53.9 130.1 34.7 34.8 81 53.9 130.1 53.9h16c49.1 0 95.3-19.1 130.1-53.9 34.8-34.7 53.9-81 53.9-130.1V184H320v296zM184 352c0 41 26.9 75.8 64 87.6-37.1-11.9-64-46.7-64-87.6zm364 382.5C665 721.8 758.4 630.2 773.8 514 758.3 630.2 665 721.7 548 734.5zM250.2 514C265.6 630.2 359 721.8 476 734.5 359 721.7 265.7 630.2 250.2 514z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6a91.99 91.99 0 0 1-64-87.6V232h64v207.6zM704 480c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneUnlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneUpCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm178 479h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M518.4 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.3 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneUpSquare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V184H184v656zm143.5-228.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M334 624h46.9c10.3 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M759.9 504H264.1c-26.5 0-48.1 19.7-48.1 44v292h592V548c0-24.3-21.6-44-48.1-44z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M456 248h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zM336 184h352v248H336V184zm472 656H216V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v292z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneVideoCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D9D9D9\",\"d\":\"M136 792h576V232H136v560zm64-488c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"d\":\"M208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneWallet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0-192H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200H184V184h656v200z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M528 576h312V448H528v128zm92-104c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M184 840h656V640H496c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32h344V184H184v656z\"},\"child\":[]}]})(props);\n};\nexport function AiTwotoneWarning (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E6E6E6\",\"d\":\"M172.2 828.1h679.6L512 239.9 172.2 828.1zM560 720a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm-16-304v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#333\",\"d\":\"M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z\"},\"child\":[]}]})(props);\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t s in i ? e(i, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[s] = t;\nvar o = (i, s, t) => h(i, typeof s != \"symbol\" ? s + \"\" : s, t);\nclass _ {\n constructor() {\n o(this, \"_locking\");\n o(this, \"_locks\");\n this._locking = Promise.resolve(), this._locks = 0;\n }\n isLocked() {\n return this._locks > 0;\n }\n lock() {\n this._locks += 1;\n let s;\n const t = new Promise(\n (l) => s = () => {\n this._locks -= 1, l();\n }\n ), c = this._locking.then(() => s);\n return this._locking = this._locking.then(() => t), c;\n }\n}\nclass n {\n constructor(s) {\n o(this, \"_queue\");\n o(this, \"_limit\");\n o(this, \"_locks\");\n this._queue = [], this._limit = s, this._locks = 0;\n }\n isLocked() {\n return this._locks >= this._limit;\n }\n async lock() {\n return this.isLocked() ? new Promise((s) => {\n this._queue.push(() => {\n this._locks++, s(this._unlock.bind(this));\n });\n }) : (this._locks++, this._unlock.bind(this));\n }\n _unlock() {\n if (this._locks--, this._queue.length && !this.isLocked()) {\n const s = this._queue.shift();\n s == null || s();\n }\n }\n}\nexport {\n n as MultiMutex,\n _ as Mutex\n};\n//# sourceMappingURL=index.mjs.map\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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 * Assert that condition is truthy or throw error (with message)\n */\nexport function assert(condition, msg) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean\n if (!condition) {\n throw new Error(msg);\n }\n}\nconst FLOAT32_MAX = 3.4028234663852886e38, FLOAT32_MIN = -3.4028234663852886e38, UINT32_MAX = 0xffffffff, INT32_MAX = 0x7fffffff, INT32_MIN = -0x80000000;\n/**\n * Assert a valid signed protobuf 32-bit integer.\n */\nexport function 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); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer.\n */\nexport function 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); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n/**\n * Assert a valid protobuf float value.\n */\nexport function 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); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { assert } from \"./assert.js\";\nconst enumTypeSymbol = Symbol(\"@bufbuild/protobuf/enum-type\");\n/**\n * Get reflection information from a generated enum.\n * If this function is called on something other than a generated\n * enum, it raises an error.\n */\nexport function getEnumType(enumObject) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\n const t = enumObject[enumTypeSymbol];\n assert(t, \"missing enum type on enum object\");\n return t; // eslint-disable-line @typescript-eslint/no-unsafe-return\n}\n/**\n * Sets reflection information on a generated enum.\n */\nexport function setEnumType(enumObject, typeName, values, opt) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n enumObject[enumTypeSymbol] = makeEnumType(typeName, values.map((v) => ({\n no: v.no,\n name: v.name,\n localName: enumObject[v.no],\n })), opt);\n}\n/**\n * Create a new EnumType with the given values.\n */\nexport function makeEnumType(typeName, values, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n_opt) {\n const names = Object.create(null);\n const numbers = Object.create(null);\n const normalValues = [];\n for (const value of values) {\n // We do not surface options at this time\n // const value: EnumValueInfo = {...v, options: v.options ?? emptyReadonlyObject};\n const n = normalizeEnumValue(value);\n normalValues.push(n);\n names[value.name] = n;\n numbers[value.no] = n;\n }\n return {\n typeName,\n values: normalValues,\n // We do not surface options at this time\n // options: opt?.options ?? Object.create(null),\n findName(name) {\n return names[name];\n },\n findNumber(no) {\n return numbers[no];\n },\n };\n}\n/**\n * Create a new enum object with the given values.\n * Sets reflection information.\n */\nexport function makeEnum(typeName, values, opt) {\n const enumObject = {};\n for (const value of values) {\n const n = normalizeEnumValue(value);\n enumObject[n.localName] = n.no;\n enumObject[n.no] = n.localName;\n }\n setEnumType(enumObject, typeName, values, opt);\n return enumObject;\n}\nfunction normalizeEnumValue(value) {\n if (\"localName\" in value) {\n return value;\n }\n return Object.assign(Object.assign({}, value), { localName: value.name });\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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 * Message is the base class of every message, generated, or created at\n * runtime.\n *\n * It is _not_ safe to extend this class. If you want to create a message at\n * run time, use proto3.makeMessageType().\n */\nexport class Message {\n /**\n * Compare with a message of the same type.\n * Note that this function disregards extensions and unknown fields.\n */\n equals(other) {\n return this.getType().runtime.util.equals(this.getType(), this, other);\n }\n /**\n * Create a deep copy.\n */\n clone() {\n return this.getType().runtime.util.clone(this);\n }\n /**\n * Parse from binary data, merging fields.\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 fromBinary(bytes, options) {\n const type = this.getType(), format = type.runtime.bin, opt = format.makeReadOptions(options);\n format.readMessage(this, opt.readerFactory(bytes), bytes.byteLength, opt);\n return this;\n }\n /**\n * Parse a message from a JSON value.\n */\n fromJson(jsonValue, options) {\n const type = this.getType(), format = type.runtime.json, opt = format.makeReadOptions(options);\n format.readMessage(type, jsonValue, opt, this);\n return this;\n }\n /**\n * Parse a message from a JSON string.\n */\n fromJsonString(jsonString, options) {\n let json;\n try {\n json = JSON.parse(jsonString);\n }\n catch (e) {\n throw new Error(`cannot decode ${this.getType().typeName} from JSON: ${e instanceof Error ? e.message : String(e)}`);\n }\n return this.fromJson(json, options);\n }\n /**\n * Serialize the message to binary data.\n */\n toBinary(options) {\n const type = this.getType(), bin = type.runtime.bin, opt = bin.makeWriteOptions(options), writer = opt.writerFactory();\n bin.writeMessage(this, writer, opt);\n return writer.finish();\n }\n /**\n * Serialize the message to a JSON value, a JavaScript value that can be\n * passed to JSON.stringify().\n */\n toJson(options) {\n const type = this.getType(), json = type.runtime.json, opt = json.makeWriteOptions(options);\n return json.writeMessage(this, opt);\n }\n /**\n * Serialize the message to a JSON string.\n */\n toJsonString(options) {\n var _a;\n const value = this.toJson(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 * Override for serialization behavior. This will be invoked when calling\n * JSON.stringify on this message (i.e. JSON.stringify(msg)).\n *\n * Note that this will not serialize google.protobuf.Any with a packed\n * message because the protobuf JSON format specifies that it needs to be\n * unpacked, and this is only possible with a type registry to look up the\n * message type. As a result, attempting to serialize a message with this\n * type will throw an Error.\n *\n * This method is protected because you should not need to invoke it\n * directly -- instead use JSON.stringify or toJsonString for\n * stringified JSON. Alternatively, if actual JSON is desired, you should\n * use toJson.\n */\n toJSON() {\n return this.toJson({\n emitDefaultValues: true,\n });\n }\n /**\n * Retrieve the MessageType of this message - a singleton that represents\n * the protobuf message declaration and provides metadata for reflection-\n * based operations.\n */\n getType() {\n // Any class that extends Message _must_ provide a complete static\n // implementation of MessageType.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return\n return Object.getPrototypeOf(this).constructor;\n }\n}\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.\n/* eslint-disable prefer-const,@typescript-eslint/restrict-plus-operands */\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: 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 */\nexport function 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}\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 */\nexport function 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}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\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\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 ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = (bits.hi & 0x80000000);\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1FFFFF) {\n return String(TWO_PWR_32_DBL * hi + lo);\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 const low = lo & 0xFFFFFF;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xFFFFFF;\n const high = (hi >> 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 const 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 // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return digitC.toString() + decimalFrom1e7WithLeadingZeros(digitB) +\n decimalFrom1e7WithLeadingZeros(digitA);\n}\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\n};\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 */\nexport function 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}\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 */\nexport function 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}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { assert } from \"./private/assert.js\";\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./google/varint.js\";\nfunction makeInt64Support() {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok = typeof BigInt === \"function\" &&\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\" &&\n (typeof process != \"object\" ||\n typeof process.env != \"object\" ||\n process.env.BUF_BIGINT_DISABLE !== \"1\");\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\"), MAX = BigInt(\"9223372036854775807\"), UMIN = BigInt(\"0\"), UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`int64 invalid: ${value}`);\n }\n return bi;\n },\n uParse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`uint64 invalid: ${value}`);\n }\n return bi;\n },\n enc(value) {\n dv.setBigInt64(0, this.parse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n uEnc(value) {\n dv.setBigInt64(0, this.uParse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n dec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigUint64(0, true);\n },\n };\n }\n const assertInt64String = (value) => assert(/^-?[0-9]+$/.test(value), `int64 invalid: ${value}`);\n const assertUInt64String = (value) => assert(/^[0-9]+$/.test(value), `uint64 invalid: ${value}`);\n return {\n zero: \"0\",\n supported: false,\n parse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return value;\n },\n uParse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return value;\n },\n enc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return int64FromString(value);\n },\n uEnc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return int64FromString(value);\n },\n dec(lo, hi) {\n return int64ToString(lo, hi);\n },\n uDec(lo, hi) {\n return uInt64ToString(lo, hi);\n },\n };\n}\nexport const protoInt64 = makeInt64Support();\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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 * 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 */\nexport var 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 || (ScalarType = {}));\n/**\n * JavaScript representation of fields with 64 bit integral types (int64, uint64,\n * sint64, fixed64, sfixed64).\n *\n * This is a subset of google.protobuf.FieldOptions.JSType, which defines JS_NORMAL,\n * JS_STRING, and JS_NUMBER. Protobuf-ES uses BigInt by default, but will use\n * String if `[jstype = JS_STRING]` is specified.\n *\n * ```protobuf\n * uint64 field_a = 1; // BigInt\n * uint64 field_b = 2 [jstype = JS_NORMAL]; // BigInt\n * uint64 field_b = 2 [jstype = JS_NUMBER]; // BigInt\n * uint64 field_b = 2 [jstype = JS_STRING]; // String\n * ```\n */\nexport var LongType;\n(function (LongType) {\n /**\n * Use JavaScript BigInt.\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})(LongType || (LongType = {}));\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./google/varint.js\";\nimport { assertFloat32, assertInt32, assertUInt32 } from \"./private/assert.js\";\nimport { protoInt64 } from \"./proto-int64.js\";\n/* eslint-disable prefer-const,no-case-declarations,@typescript-eslint/restrict-plus-operands */\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 */\nexport var 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 * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n * in editions with message_encoding = DELIMITED.\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * End of a tag-delimited aggregate.\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 || (WireType = {}));\nexport class 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 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 assertInt32(value);\n 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 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 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 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 assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n 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), view = new DataView(chunk.buffer), tc = protoInt64.enc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.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), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.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 tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.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 tc = protoInt64.enc(value), \n // zigzag encode\n sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n 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 tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\nexport class BinaryReader {\n constructor(buf, textDecoder) {\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = 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();\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 and return the skipped data.\n *\n * When skipping StartGroup, provide the tags field number to check for\n * matching field number in the EndGroup tag.\n */\n skip(wireType, fieldNo) {\n let start = this.pos;\n switch (wireType) {\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n // eslint-disable-next-line\n // @ts-ignore TS7029: Fallthrough case in switch\n case WireType.Bit64:\n this.pos += 4;\n // eslint-disable-next-line\n // @ts-ignore TS7029: Fallthrough case in switch\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.StartGroup:\n for (;;) {\n const [fn, wt] = this.tag();\n if (wt === WireType.EndGroup) {\n if (fieldNo !== undefined && fn !== fieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n break;\n }\n this.skip(wt, fn);\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 protoInt64.dec(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return protoInt64.uDec(...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 protoInt64.dec(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 protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return protoInt64.dec(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(), 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}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { LongType, ScalarType } from \"../scalar.js\";\n/**\n * Returns true if both scalar values are equal.\n */\nexport function scalarEquals(type, a, b) {\n if (a === b) {\n // This correctly matches equal values except BYTES and (possibly) 64-bit integers.\n return true;\n }\n // Special case BYTES - we need to compare each byte individually\n if (type == ScalarType.BYTES) {\n if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n // Special case 64-bit integers - we support number, string and bigint representation.\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // Loose comparison will match between 0n, 0 and \"0\".\n return a == b;\n }\n // Anything that hasn't been caught by strict comparison or special cased\n // BYTES and 64-bit integers is not equal.\n return false;\n}\n/**\n * Returns the zero value for the given scalar type.\n */\nexport function scalarZeroValue(type, longType) {\n switch (type) {\n case ScalarType.BOOL:\n return false;\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison -- acceptable since it's covered by tests\n return (longType == 0 ? protoInt64.zero : \"0\");\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n return 0.0;\n case ScalarType.BYTES:\n return new Uint8Array(0);\n case ScalarType.STRING:\n return \"\";\n default:\n // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.\n // We do not use individual cases to save a few bytes code size.\n return 0;\n }\n}\n/**\n * Returns true for a zero-value. For example, an integer has the zero-value `0`,\n * a boolean is `false`, a string is `\"\"`, and bytes is an empty Uint8Array.\n *\n * In proto3, zero-values are not written to the wire, unless the field is\n * optional or repeated.\n */\nexport function isScalarZeroValue(type, value) {\n switch (type) {\n case ScalarType.BOOL:\n return value === false;\n case ScalarType.STRING:\n return value === \"\";\n case ScalarType.BYTES:\n return value instanceof Uint8Array && !value.byteLength;\n default:\n return value == 0; // Loose comparison matches 0n, 0 and \"0\"\n }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { scalarZeroValue } from \"./scalars.js\";\nimport { WireType } from \"../binary-encoding.js\";\n/**\n * Create a new extension using the given runtime.\n */\nexport function makeExtension(runtime, typeName, extendee, field) {\n let fi;\n return {\n typeName,\n extendee,\n get field() {\n if (!fi) {\n const i = (typeof field == \"function\" ? field() : field);\n i.name = typeName.split(\".\").pop();\n i.jsonName = `[${typeName}]`;\n fi = runtime.util.newFieldList([i]).list()[0];\n }\n return fi;\n },\n runtime,\n };\n}\n/**\n * Create a container that allows us to read extension fields into it with the\n * same logic as regular fields.\n */\nexport function createExtensionContainer(extension) {\n const localName = extension.field.localName;\n const container = Object.create(null);\n container[localName] = initExtensionField(extension);\n return [container, () => container[localName]];\n}\nfunction initExtensionField(ext) {\n const field = ext.field;\n if (field.repeated) {\n return [];\n }\n if (field.default !== undefined) {\n return field.default;\n }\n switch (field.kind) {\n case \"enum\":\n return field.T.values[0].no;\n case \"scalar\":\n return scalarZeroValue(field.T, field.L);\n case \"message\":\n // eslint-disable-next-line no-case-declarations\n const T = field.T, value = new T();\n return T.fieldWrapper ? T.fieldWrapper.unwrapField(value) : value;\n case \"map\":\n throw \"map fields are not allowed to be extensions\";\n }\n}\n/**\n * Helper to filter unknown fields, optimized based on field type.\n */\nexport function filterUnknownFields(unknownFields, field) {\n if (!field.repeated && (field.kind == \"enum\" || field.kind == \"scalar\")) {\n // singular scalar fields do not merge, we pick the last\n for (let i = unknownFields.length - 1; i >= 0; --i) {\n if (unknownFields[i].no == field.no) {\n return [unknownFields[i]];\n }\n }\n return [];\n }\n return unknownFields.filter((uf) => uf.no === field.no);\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unnecessary-condition, prefer-const */\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(\"/\");\nexport const protoBase64 = {\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 */\n dec(base64Str) {\n // estimate byte size, not accounting for inner padding and whitespace\n let es = (base64Str.length * 3) / 4;\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 for (let i = 0; i < base64Str.length; i++) {\n b = decTable[base64Str.charCodeAt(i)];\n if (b === undefined) {\n switch (base64Str[i]) {\n // @ts-ignore TS7029: Fallthrough case in switch\n case \"=\":\n groupPos = 0; // reset state when padding found\n // @ts-ignore TS7029: Fallthrough case in switch\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 },\n /**\n * Encode a byte array to a base64 string.\n */\n enc(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 // add output padding\n if (groupPos) {\n base64 += encTable[p];\n base64 += \"=\";\n if (groupPos == 1)\n base64 += \"=\";\n }\n return base64;\n },\n};\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { assert } from \"./private/assert.js\";\nimport { createExtensionContainer, filterUnknownFields, } from \"./private/extensions.js\";\n/**\n * Retrieve an extension value from a message.\n *\n * The function never returns undefined. Use hasExtension() to check whether an\n * extension is set. If the extension is not set, this function returns the\n * default value (if one was specified in the protobuf source), or the zero value\n * (for example `0` for numeric types, `[]` for repeated extension fields, and\n * an empty message instance for message fields).\n *\n * Extensions are stored as unknown fields on a message. To mutate an extension\n * value, make sure to store the new value with setExtension() after mutating.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function getExtension(message, extension, options) {\n assertExtendee(extension, message);\n const opt = extension.runtime.bin.makeReadOptions(options);\n const ufs = filterUnknownFields(message.getType().runtime.bin.listUnknownFields(message), extension.field);\n const [container, get] = createExtensionContainer(extension);\n for (const uf of ufs) {\n extension.runtime.bin.readField(container, opt.readerFactory(uf.data), extension.field, uf.wireType, opt);\n }\n return get();\n}\n/**\n * Set an extension value on a message. If the message already has a value for\n * this extension, the value is replaced.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function setExtension(message, extension, value, options) {\n assertExtendee(extension, message);\n const readOpt = extension.runtime.bin.makeReadOptions(options);\n const writeOpt = extension.runtime.bin.makeWriteOptions(options);\n if (hasExtension(message, extension)) {\n const ufs = message\n .getType()\n .runtime.bin.listUnknownFields(message)\n .filter((uf) => uf.no != extension.field.no);\n message.getType().runtime.bin.discardUnknownFields(message);\n for (const uf of ufs) {\n message\n .getType()\n .runtime.bin.onUnknownField(message, uf.no, uf.wireType, uf.data);\n }\n }\n const writer = writeOpt.writerFactory();\n let f = extension.field;\n // Implicit presence does not apply to extensions, see https://github.com/protocolbuffers/protobuf/issues/8234\n // We patch the field info to use explicit presence:\n if (!f.opt && !f.repeated && (f.kind == \"enum\" || f.kind == \"scalar\")) {\n f = Object.assign(Object.assign({}, extension.field), { opt: true });\n }\n extension.runtime.bin.writeField(f, value, writer, writeOpt);\n const reader = readOpt.readerFactory(writer.finish());\n while (reader.pos < reader.len) {\n const [no, wireType] = reader.tag();\n const data = reader.skip(wireType, no);\n message.getType().runtime.bin.onUnknownField(message, no, wireType, data);\n }\n}\n/**\n * Remove an extension value from a message.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function clearExtension(message, extension) {\n assertExtendee(extension, message);\n if (hasExtension(message, extension)) {\n const bin = message.getType().runtime.bin;\n const ufs = bin\n .listUnknownFields(message)\n .filter((uf) => uf.no != extension.field.no);\n bin.discardUnknownFields(message);\n for (const uf of ufs) {\n bin.onUnknownField(message, uf.no, uf.wireType, uf.data);\n }\n }\n}\n/**\n * Check whether an extension is set on a message.\n */\nexport function hasExtension(message, extension) {\n const messageType = message.getType();\n return (extension.extendee.typeName === messageType.typeName &&\n !!messageType.runtime.bin\n .listUnknownFields(message)\n .find((uf) => uf.no == extension.field.no));\n}\nfunction assertExtendee(extension, message) {\n assert(extension.extendee.typeName == message.getType().typeName, `extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`);\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { isScalarZeroValue, scalarZeroValue } from \"./scalars.js\";\n/**\n * Returns true if the field is set.\n */\nexport function isFieldSet(field, target) {\n const localName = field.localName;\n if (field.repeated) {\n return target[localName].length > 0;\n }\n if (field.oneof) {\n return target[field.oneof.localName].case === localName; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n }\n switch (field.kind) {\n case \"enum\":\n case \"scalar\":\n if (field.opt || field.req) {\n // explicit presence\n return target[localName] !== undefined;\n }\n // implicit presence\n if (field.kind == \"enum\") {\n return target[localName] !== field.T.values[0].no;\n }\n return !isScalarZeroValue(field.T, target[localName]);\n case \"message\":\n return target[localName] !== undefined;\n case \"map\":\n return Object.keys(target[localName]).length > 0; // eslint-disable-line @typescript-eslint/no-unsafe-argument\n }\n}\n/**\n * Resets the field, so that isFieldSet() will return false.\n */\nexport function clearField(field, target) {\n const localName = field.localName;\n const implicitPresence = !field.opt && !field.req;\n if (field.repeated) {\n target[localName] = [];\n }\n else if (field.oneof) {\n target[field.oneof.localName] = { case: undefined };\n }\n else {\n switch (field.kind) {\n case \"map\":\n target[localName] = {};\n break;\n case \"enum\":\n target[localName] = implicitPresence ? field.T.values[0].no : undefined;\n break;\n case \"scalar\":\n target[localName] = implicitPresence\n ? scalarZeroValue(field.T, field.L)\n : undefined;\n break;\n case \"message\":\n target[localName] = undefined;\n break;\n }\n }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { Message } from \"./message.js\";\n/**\n * Check whether the given object is any subtype of Message or is a specific\n * Message by passing the type.\n *\n * Just like `instanceof`, `isMessage` narrows the type. The advantage of\n * `isMessage` is that it compares identity by the message type name, not by\n * class identity. This makes it robust against the dual package hazard and\n * similar situations, where the same message is duplicated.\n *\n * This function is _mostly_ equivalent to the `instanceof` operator. For\n * example, `isMessage(foo, MyMessage)` is the same as `foo instanceof MyMessage`,\n * and `isMessage(foo)` is the same as `foo instanceof Message`. In most cases,\n * `isMessage` should be preferred over `instanceof`.\n *\n * However, due to the fact that `isMessage` does not use class identity, there\n * are subtle differences between this function and `instanceof`. Notably,\n * calling `isMessage` on an explicit type of Message will return false.\n */\nexport function isMessage(arg, type) {\n if (arg === null || typeof arg != \"object\") {\n return false;\n }\n if (!Object.getOwnPropertyNames(Message.prototype).every((m) => m in arg && typeof arg[m] == \"function\")) {\n return false;\n }\n const actualType = arg.getType();\n if (actualType === null ||\n typeof actualType != \"function\" ||\n !(\"typeName\" in actualType) ||\n typeof actualType.typeName != \"string\") {\n return false;\n }\n return type === undefined ? true : actualType.typeName == type.typeName;\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { Message } from \"../message.js\";\nimport { ScalarType } from \"../scalar.js\";\nimport { isMessage } from \"../is-message.js\";\n/**\n * Wrap a primitive message field value in its corresponding wrapper\n * message. This function is idempotent.\n */\nexport function wrapField(type, value) {\n if (isMessage(value) || !type.fieldWrapper) {\n return value;\n }\n return type.fieldWrapper.wrapField(value);\n}\n/**\n * If the given field uses one of the well-known wrapper types, return\n * the primitive type it wraps.\n */\nexport function getUnwrappedFieldType(field) {\n if (field.fieldKind !== \"message\") {\n return undefined;\n }\n if (field.repeated) {\n return undefined;\n }\n if (field.oneof != undefined) {\n return undefined;\n }\n return wktWrapperToScalarType[field.message.typeName];\n}\nconst wktWrapperToScalarType = {\n \"google.protobuf.DoubleValue\": ScalarType.DOUBLE,\n \"google.protobuf.FloatValue\": ScalarType.FLOAT,\n \"google.protobuf.Int64Value\": ScalarType.INT64,\n \"google.protobuf.UInt64Value\": ScalarType.UINT64,\n \"google.protobuf.Int32Value\": ScalarType.INT32,\n \"google.protobuf.UInt32Value\": ScalarType.UINT32,\n \"google.protobuf.BoolValue\": ScalarType.BOOL,\n \"google.protobuf.StringValue\": ScalarType.STRING,\n \"google.protobuf.BytesValue\": ScalarType.BYTES,\n};\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { Message } from \"../message.js\";\nimport { assert, assertFloat32, assertInt32, assertUInt32 } from \"./assert.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { protoBase64 } from \"../proto-base64.js\";\nimport { createExtensionContainer } from \"./extensions.js\";\nimport { getExtension, hasExtension, setExtension, } from \"../extension-accessor.js\";\nimport { clearField, isFieldSet } from \"./reflect.js\";\nimport { wrapField } from \"./field-wrapper.js\";\nimport { scalarZeroValue } from \"./scalars.js\";\nimport { isScalarZeroValue } from \"./scalars.js\";\nimport { LongType, ScalarType } from \"../scalar.js\";\nimport { isMessage } from \"../is-message.js\";\n/* eslint-disable no-case-declarations,@typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call */\n// Default options for parsing JSON.\nconst jsonReadDefaults = {\n ignoreUnknownFields: false,\n};\n// Default options for serializing to JSON.\nconst jsonWriteDefaults = {\n emitDefaultValues: false,\n enumAsInteger: false,\n useProtoFieldName: false,\n prettySpaces: 0,\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonReadDefaults), options) : jsonReadDefaults;\n}\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonWriteDefaults), options) : jsonWriteDefaults;\n}\nconst tokenNull = Symbol();\nconst tokenIgnoredUnknownEnum = Symbol();\nexport function makeJsonFormat() {\n return {\n makeReadOptions,\n makeWriteOptions,\n readMessage(type, json, options, message) {\n if (json == null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode message ${type.typeName} from JSON: ${debugJsonValue(json)}`);\n }\n message = message !== null && message !== void 0 ? message : new type();\n const oneofSeen = new Map();\n const registry = options.typeRegistry;\n for (const [jsonKey, jsonValue] of Object.entries(json)) {\n const field = type.fields.findJsonName(jsonKey);\n if (field) {\n if (field.oneof) {\n if (jsonValue === null && field.kind == \"scalar\") {\n // see conformance test Required.Proto3.JsonInput.OneofFieldNull{First,Second}\n continue;\n }\n const seen = oneofSeen.get(field.oneof);\n if (seen !== undefined) {\n throw new Error(`cannot decode message ${type.typeName} from JSON: multiple keys for oneof \"${field.oneof.name}\" present: \"${seen}\", \"${jsonKey}\"`);\n }\n oneofSeen.set(field.oneof, jsonKey);\n }\n readField(message, jsonValue, field, options, type);\n }\n else {\n let found = false;\n if ((registry === null || registry === void 0 ? void 0 : registry.findExtension) &&\n jsonKey.startsWith(\"[\") &&\n jsonKey.endsWith(\"]\")) {\n const ext = registry.findExtension(jsonKey.substring(1, jsonKey.length - 1));\n if (ext && ext.extendee.typeName == type.typeName) {\n found = true;\n const [container, get] = createExtensionContainer(ext);\n readField(container, jsonValue, ext.field, options, ext);\n // We pass on the options as BinaryReadOptions/BinaryWriteOptions,\n // so that users can bring their own binary reader and writer factories\n // if necessary.\n setExtension(message, ext, get(), options);\n }\n }\n if (!found && !options.ignoreUnknownFields) {\n throw new Error(`cannot decode message ${type.typeName} from JSON: key \"${jsonKey}\" is unknown`);\n }\n }\n }\n return message;\n },\n writeMessage(message, options) {\n const type = message.getType();\n const json = {};\n let field;\n try {\n for (field of type.fields.byNumber()) {\n if (!isFieldSet(field, message)) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (field.req) {\n throw `required field not set`;\n }\n if (!options.emitDefaultValues) {\n continue;\n }\n if (!canEmitFieldDefaultValue(field)) {\n continue;\n }\n }\n const value = field.oneof\n ? message[field.oneof.localName].value\n : message[field.localName];\n const jsonValue = writeField(field, value, options);\n if (jsonValue !== undefined) {\n json[options.useProtoFieldName ? field.name : field.jsonName] =\n jsonValue;\n }\n }\n const registry = options.typeRegistry;\n if (registry === null || registry === void 0 ? void 0 : registry.findExtensionFor) {\n for (const uf of type.runtime.bin.listUnknownFields(message)) {\n const ext = registry.findExtensionFor(type.typeName, uf.no);\n if (ext && hasExtension(message, ext)) {\n // We pass on the options as BinaryReadOptions, so that users can bring their own\n // binary reader factory if necessary.\n const value = getExtension(message, ext, options);\n const jsonValue = writeField(ext.field, value, options);\n if (jsonValue !== undefined) {\n json[ext.field.jsonName] = jsonValue;\n }\n }\n }\n }\n }\n catch (e) {\n const m = field\n ? `cannot encode field ${type.typeName}.${field.name} to JSON`\n : `cannot encode message ${type.typeName} to JSON`;\n const r = e instanceof Error ? e.message : String(e);\n throw new Error(m + (r.length > 0 ? `: ${r}` : \"\"));\n }\n return json;\n },\n readScalar(type, json, longType) {\n // The signature of our internal function has changed. For backwards-\n // compatibility, we support the old form that is part of the public API\n // through the interface JsonFormat.\n return readScalar(type, json, longType !== null && longType !== void 0 ? longType : LongType.BIGINT, true);\n },\n writeScalar(type, value, emitDefaultValues) {\n // The signature of our internal function has changed. For backwards-\n // compatibility, we support the old form that is part of the public API\n // through the interface JsonFormat.\n if (value === undefined) {\n return undefined;\n }\n if (emitDefaultValues || isScalarZeroValue(type, value)) {\n return writeScalar(type, value);\n }\n return undefined;\n },\n debug: debugJsonValue,\n };\n}\nfunction debugJsonValue(json) {\n if (json === null) {\n return \"null\";\n }\n switch (typeof json) {\n case \"object\":\n return Array.isArray(json) ? \"array\" : \"object\";\n case \"string\":\n return json.length > 100 ? \"string\" : `\"${json.split('\"').join('\\\\\"')}\"`;\n default:\n return String(json);\n }\n}\n// Read a JSON value for a field.\n// The \"parentType\" argument is only used to provide context in errors.\nfunction readField(target, jsonValue, field, options, parentType) {\n let localName = field.localName;\n if (field.repeated) {\n assert(field.kind != \"map\");\n if (jsonValue === null) {\n return;\n }\n if (!Array.isArray(jsonValue)) {\n throw new Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);\n }\n const targetArray = target[localName];\n for (const jsonItem of jsonValue) {\n if (jsonItem === null) {\n throw new Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`);\n }\n switch (field.kind) {\n case \"message\":\n targetArray.push(field.T.fromJson(jsonItem, options));\n break;\n case \"enum\":\n const enumValue = readEnum(field.T, jsonItem, options.ignoreUnknownFields, true);\n if (enumValue !== tokenIgnoredUnknownEnum) {\n targetArray.push(enumValue);\n }\n break;\n case \"scalar\":\n try {\n targetArray.push(readScalar(field.T, jsonItem, field.L, true));\n }\n catch (e) {\n let m = `cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonItem)}`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n }\n }\n else if (field.kind == \"map\") {\n if (jsonValue === null) {\n return;\n }\n if (typeof jsonValue != \"object\" || Array.isArray(jsonValue)) {\n throw new Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`);\n }\n const targetMap = target[localName];\n for (const [jsonMapKey, jsonMapValue] of Object.entries(jsonValue)) {\n if (jsonMapValue === null) {\n throw new Error(`cannot decode field ${parentType.typeName}.${field.name} from JSON: map value null`);\n }\n let key;\n try {\n key = readMapKey(field.K, jsonMapKey);\n }\n catch (e) {\n let m = `cannot decode map key for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n switch (field.V.kind) {\n case \"message\":\n targetMap[key] = field.V.T.fromJson(jsonMapValue, options);\n break;\n case \"enum\":\n const enumValue = readEnum(field.V.T, jsonMapValue, options.ignoreUnknownFields, true);\n if (enumValue !== tokenIgnoredUnknownEnum) {\n targetMap[key] = enumValue;\n }\n break;\n case \"scalar\":\n try {\n targetMap[key] = readScalar(field.V.T, jsonMapValue, LongType.BIGINT, true);\n }\n catch (e) {\n let m = `cannot decode map value for field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n }\n }\n else {\n if (field.oneof) {\n target = target[field.oneof.localName] = { case: localName };\n localName = \"value\";\n }\n switch (field.kind) {\n case \"message\":\n const messageType = field.T;\n if (jsonValue === null &&\n messageType.typeName != \"google.protobuf.Value\") {\n return;\n }\n let currentValue = target[localName];\n if (isMessage(currentValue)) {\n currentValue.fromJson(jsonValue, options);\n }\n else {\n target[localName] = currentValue = messageType.fromJson(jsonValue, options);\n if (messageType.fieldWrapper && !field.oneof) {\n target[localName] =\n messageType.fieldWrapper.unwrapField(currentValue);\n }\n }\n break;\n case \"enum\":\n const enumValue = readEnum(field.T, jsonValue, options.ignoreUnknownFields, false);\n switch (enumValue) {\n case tokenNull:\n clearField(field, target);\n break;\n case tokenIgnoredUnknownEnum:\n break;\n default:\n target[localName] = enumValue;\n break;\n }\n break;\n case \"scalar\":\n try {\n const scalarValue = readScalar(field.T, jsonValue, field.L, false);\n switch (scalarValue) {\n case tokenNull:\n clearField(field, target);\n break;\n default:\n target[localName] = scalarValue;\n break;\n }\n }\n catch (e) {\n let m = `cannot decode field ${parentType.typeName}.${field.name} from JSON: ${debugJsonValue(jsonValue)}`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n }\n}\nfunction readMapKey(type, json) {\n if (type === ScalarType.BOOL) {\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (json) {\n case \"true\":\n json = true;\n break;\n case \"false\":\n json = false;\n break;\n }\n }\n return readScalar(type, json, LongType.BIGINT, true).toString();\n}\nfunction readScalar(type, json, longType, nullAsZeroValue) {\n if (json === null) {\n if (nullAsZeroValue) {\n return scalarZeroValue(type, longType);\n }\n return tokenNull;\n }\n // every valid case in the switch below returns, and every fall\n // through is regarded as a failure.\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 ScalarType.DOUBLE:\n case ScalarType.FLOAT:\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 // empty string is not a number\n break;\n }\n if (typeof json == \"string\" && json.trim().length !== json.length) {\n // extra whitespace\n break;\n }\n if (typeof json != \"string\" && typeof json != \"number\") {\n break;\n }\n const float = Number(json);\n if (Number.isNaN(float)) {\n // 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 break;\n }\n if (type == ScalarType.FLOAT)\n assertFloat32(float);\n return float;\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.UINT32:\n let int32;\n if (typeof json == \"number\")\n int32 = json;\n else if (typeof json == \"string\" && json.length > 0) {\n if (json.trim().length === json.length)\n int32 = Number(json);\n }\n if (int32 === undefined)\n break;\n if (type == ScalarType.UINT32 || type == ScalarType.FIXED32)\n assertUInt32(int32);\n else\n assertInt32(int32);\n return int32;\n // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted.\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (typeof json != \"number\" && typeof json != \"string\")\n break;\n const long = protoInt64.parse(json);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n return longType ? long.toString() : long;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (typeof json != \"number\" && typeof json != \"string\")\n break;\n const uLong = protoInt64.uParse(json);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n return longType ? uLong.toString() : uLong;\n // bool:\n case ScalarType.BOOL:\n if (typeof json !== \"boolean\")\n break;\n return json;\n // string:\n case ScalarType.STRING:\n if (typeof json !== \"string\") {\n break;\n }\n // A string must always contain UTF-8 encoded or 7-bit ASCII.\n // We validate with encodeURIComponent, which appears to be the fastest widely available option.\n try {\n encodeURIComponent(json);\n }\n catch (e) {\n throw new Error(\"invalid UTF8\");\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 ScalarType.BYTES:\n if (json === \"\")\n return new Uint8Array(0);\n if (typeof json !== \"string\")\n break;\n return protoBase64.dec(json);\n }\n throw new Error();\n}\nfunction readEnum(type, json, ignoreUnknownFields, nullAsZeroValue) {\n if (json === null) {\n if (type.typeName == \"google.protobuf.NullValue\") {\n return 0; // google.protobuf.NullValue.NULL_VALUE = 0\n }\n return nullAsZeroValue ? type.values[0].no : tokenNull;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof json) {\n case \"number\":\n if (Number.isInteger(json)) {\n return json;\n }\n break;\n case \"string\":\n const value = type.findName(json);\n if (value !== undefined) {\n return value.no;\n }\n if (ignoreUnknownFields) {\n return tokenIgnoredUnknownEnum;\n }\n break;\n }\n throw new Error(`cannot decode enum ${type.typeName} from JSON: ${debugJsonValue(json)}`);\n}\n// Decide whether an unset field should be emitted with JSON write option `emitDefaultValues`\nfunction canEmitFieldDefaultValue(field) {\n if (field.repeated || field.kind == \"map\") {\n // maps are {}, repeated fields are []\n return true;\n }\n if (field.oneof) {\n // oneof fields are never emitted\n return false;\n }\n if (field.kind == \"message\") {\n // singular message field are allowed to emit JSON null, but we do not\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (field.opt || field.req) {\n // the field uses explicit presence, so we cannot emit a zero value\n return false;\n }\n return true;\n}\nfunction writeField(field, value, options) {\n if (field.kind == \"map\") {\n assert(typeof value == \"object\" && value != null);\n const jsonObj = {};\n const entries = Object.entries(value);\n switch (field.V.kind) {\n case \"scalar\":\n for (const [entryKey, entryValue] of entries) {\n jsonObj[entryKey.toString()] = writeScalar(field.V.T, entryValue); // JSON standard allows only (double quoted) string as property key\n }\n break;\n case \"message\":\n for (const [entryKey, entryValue] of entries) {\n // JSON standard allows only (double quoted) string as property key\n jsonObj[entryKey.toString()] = entryValue.toJson(options);\n }\n break;\n case \"enum\":\n const enumType = field.V.T;\n for (const [entryKey, entryValue] of entries) {\n // JSON standard allows only (double quoted) string as property key\n jsonObj[entryKey.toString()] = writeEnum(enumType, entryValue, options.enumAsInteger);\n }\n break;\n }\n return options.emitDefaultValues || entries.length > 0\n ? jsonObj\n : undefined;\n }\n if (field.repeated) {\n assert(Array.isArray(value));\n const jsonArr = [];\n switch (field.kind) {\n case \"scalar\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(writeScalar(field.T, value[i]));\n }\n break;\n case \"enum\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(writeEnum(field.T, value[i], options.enumAsInteger));\n }\n break;\n case \"message\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(value[i].toJson(options));\n }\n break;\n }\n return options.emitDefaultValues || jsonArr.length > 0\n ? jsonArr\n : undefined;\n }\n switch (field.kind) {\n case \"scalar\":\n return writeScalar(field.T, value);\n case \"enum\":\n return writeEnum(field.T, value, options.enumAsInteger);\n case \"message\":\n return wrapField(field.T, value).toJson(options);\n }\n}\nfunction writeEnum(type, value, enumAsInteger) {\n var _a;\n assert(typeof value == \"number\");\n if (type.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n if (enumAsInteger) {\n return value;\n }\n const val = type.findNumber(value);\n return (_a = val === null || val === void 0 ? void 0 : val.name) !== null && _a !== void 0 ? _a : value; // if we don't know the enum value, just return the number\n}\nfunction writeScalar(type, value) {\n switch (type) {\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n assert(typeof value == \"number\");\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 ScalarType.FLOAT:\n // assertFloat32(value);\n case ScalarType.DOUBLE: // eslint-disable-line no-fallthrough\n 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 ScalarType.STRING:\n assert(typeof value == \"string\");\n return value;\n // bool:\n case ScalarType.BOOL:\n assert(typeof value == \"boolean\");\n return value;\n // JSON value will be a decimal string. Either numbers or strings are accepted.\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n assert(typeof value == \"bigint\" ||\n typeof value == \"string\" ||\n typeof value == \"number\");\n return value.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 ScalarType.BYTES:\n assert(value instanceof Uint8Array);\n return protoBase64.enc(value);\n }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { BinaryReader, BinaryWriter, WireType } from \"../binary-encoding.js\";\nimport { Message } from \"../message.js\";\nimport { wrapField } from \"./field-wrapper.js\";\nimport { scalarZeroValue } from \"./scalars.js\";\nimport { assert } from \"./assert.js\";\nimport { isFieldSet } from \"./reflect.js\";\nimport { LongType, ScalarType } from \"../scalar.js\";\nimport { isMessage } from \"../is-message.js\";\n/* eslint-disable prefer-const,no-case-declarations,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return */\nconst unknownFieldsSymbol = Symbol(\"@bufbuild/protobuf/unknown-fields\");\n// Default options for parsing binary data.\nconst readDefaults = {\n readUnknownFields: true,\n readerFactory: (bytes) => new BinaryReader(bytes),\n};\n// Default options for serializing binary data.\nconst writeDefaults = {\n writeUnknownFields: true,\n writerFactory: () => new BinaryWriter(),\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, readDefaults), options) : readDefaults;\n}\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, writeDefaults), options) : writeDefaults;\n}\nexport function makeBinaryFormat() {\n return {\n makeReadOptions,\n makeWriteOptions,\n listUnknownFields(message) {\n var _a;\n return (_a = message[unknownFieldsSymbol]) !== null && _a !== void 0 ? _a : [];\n },\n discardUnknownFields(message) {\n delete message[unknownFieldsSymbol];\n },\n writeUnknownFields(message, writer) {\n const m = message;\n const c = m[unknownFieldsSymbol];\n if (c) {\n for (const f of c) {\n writer.tag(f.no, f.wireType).raw(f.data);\n }\n }\n },\n onUnknownField(message, no, wireType, data) {\n const m = message;\n if (!Array.isArray(m[unknownFieldsSymbol])) {\n m[unknownFieldsSymbol] = [];\n }\n m[unknownFieldsSymbol].push({ no, wireType, data });\n },\n readMessage(message, reader, lengthOrEndTagFieldNo, options, delimitedMessageEncoding) {\n const type = message.getType();\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n const end = delimitedMessageEncoding\n ? reader.len\n : reader.pos + lengthOrEndTagFieldNo;\n let fieldNo, wireType;\n while (reader.pos < end) {\n [fieldNo, wireType] = reader.tag();\n if (delimitedMessageEncoding === true &&\n wireType == WireType.EndGroup) {\n break;\n }\n const field = type.fields.find(fieldNo);\n if (!field) {\n const data = reader.skip(wireType, fieldNo);\n if (options.readUnknownFields) {\n this.onUnknownField(message, fieldNo, wireType, data);\n }\n continue;\n }\n readField(message, reader, field, wireType, options);\n }\n if (delimitedMessageEncoding && // eslint-disable-line @typescript-eslint/strict-boolean-expressions\n (wireType != WireType.EndGroup || fieldNo !== lengthOrEndTagFieldNo)) {\n throw new Error(`invalid end group tag`);\n }\n },\n readField,\n writeMessage(message, writer, options) {\n const type = message.getType();\n for (const field of type.fields.byNumber()) {\n if (!isFieldSet(field, message)) {\n if (field.req) {\n throw new Error(`cannot encode field ${type.typeName}.${field.name} to binary: required field not set`);\n }\n continue;\n }\n const value = field.oneof\n ? message[field.oneof.localName].value\n : message[field.localName];\n writeField(field, value, writer, options);\n }\n if (options.writeUnknownFields) {\n this.writeUnknownFields(message, writer);\n }\n return writer;\n },\n writeField(field, value, writer, options) {\n // The behavior of our internal function has changed, it does no longer\n // accept `undefined` values for singular scalar and map.\n // For backwards-compatibility, we support the old form that is part of\n // the public API through the interface BinaryFormat.\n if (value === undefined) {\n return undefined;\n }\n writeField(field, value, writer, options);\n },\n };\n}\nfunction readField(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access\nreader, field, wireType, options) {\n let { repeated, localName } = field;\n if (field.oneof) {\n target = target[field.oneof.localName];\n if (target.case != localName) {\n delete target.value;\n }\n target.case = localName;\n localName = \"value\";\n }\n switch (field.kind) {\n case \"scalar\":\n case \"enum\":\n const scalarType = field.kind == \"enum\" ? ScalarType.INT32 : field.T;\n let read = readScalar;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison -- acceptable since it's covered by tests\n if (field.kind == \"scalar\" && field.L > 0) {\n read = readScalarLTString;\n }\n if (repeated) {\n let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values\n const isPacked = wireType == WireType.LengthDelimited &&\n scalarType != ScalarType.STRING &&\n scalarType != ScalarType.BYTES;\n if (isPacked) {\n let e = reader.uint32() + reader.pos;\n while (reader.pos < e) {\n arr.push(read(reader, scalarType));\n }\n }\n else {\n arr.push(read(reader, scalarType));\n }\n }\n else {\n target[localName] = read(reader, scalarType);\n }\n break;\n case \"message\":\n const messageType = field.T;\n if (repeated) {\n // safe to assume presence of array, oneof cannot contain repeated values\n target[localName].push(readMessageField(reader, new messageType(), options, field));\n }\n else {\n if (isMessage(target[localName])) {\n readMessageField(reader, target[localName], options, field);\n }\n else {\n target[localName] = readMessageField(reader, new messageType(), options, field);\n if (messageType.fieldWrapper && !field.oneof && !field.repeated) {\n target[localName] = messageType.fieldWrapper.unwrapField(target[localName]);\n }\n }\n }\n break;\n case \"map\":\n let [mapKey, mapVal] = readMapEntry(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// Read a message, avoiding MessageType.fromBinary() to re-use the\n// BinaryReadOptions and the IBinaryReader.\nfunction readMessageField(reader, message, options, field) {\n const format = message.getType().runtime.bin;\n const delimited = field === null || field === void 0 ? void 0 : field.delimited;\n format.readMessage(message, reader, delimited ? field.no : reader.uint32(), // eslint-disable-line @typescript-eslint/strict-boolean-expressions\n options, delimited);\n return message;\n}\n// Read a map field, expecting key field = 1, value field = 2\nfunction readMapEntry(field, reader, options) {\n const length = reader.uint32(), end = reader.pos + length;\n let key, val;\n while (reader.pos < end) {\n const [fieldNo] = reader.tag();\n switch (fieldNo) {\n case 1:\n key = readScalar(reader, field.K);\n break;\n case 2:\n switch (field.V.kind) {\n case \"scalar\":\n val = readScalar(reader, field.V.T);\n break;\n case \"enum\":\n val = reader.int32();\n break;\n case \"message\":\n val = readMessageField(reader, new field.V.T(), options, undefined);\n break;\n }\n break;\n }\n }\n if (key === undefined) {\n key = scalarZeroValue(field.K, LongType.BIGINT);\n }\n if (typeof key != \"string\" && typeof key != \"number\") {\n key = key.toString();\n }\n if (val === undefined) {\n switch (field.V.kind) {\n case \"scalar\":\n val = scalarZeroValue(field.V.T, LongType.BIGINT);\n break;\n case \"enum\":\n val = field.V.T.values[0].no;\n break;\n case \"message\":\n val = new field.V.T();\n break;\n }\n }\n return [key, val];\n}\n// Read a scalar value, but return 64 bit integral types (int64, uint64,\n// sint64, fixed64, sfixed64) as string instead of bigint.\nfunction readScalarLTString(reader, type) {\n const v = readScalar(reader, type);\n return typeof v == \"bigint\" ? v.toString() : v;\n}\n// Does not use scalarTypeInfo() for better performance.\nfunction readScalar(reader, type) {\n switch (type) {\n case ScalarType.STRING:\n return reader.string();\n case ScalarType.BOOL:\n return reader.bool();\n case ScalarType.DOUBLE:\n return reader.double();\n case ScalarType.FLOAT:\n return reader.float();\n case ScalarType.INT32:\n return reader.int32();\n case ScalarType.INT64:\n return reader.int64();\n case ScalarType.UINT64:\n return reader.uint64();\n case ScalarType.FIXED64:\n return reader.fixed64();\n case ScalarType.BYTES:\n return reader.bytes();\n case ScalarType.FIXED32:\n return reader.fixed32();\n case ScalarType.SFIXED32:\n return reader.sfixed32();\n case ScalarType.SFIXED64:\n return reader.sfixed64();\n case ScalarType.SINT64:\n return reader.sint64();\n case ScalarType.UINT32:\n return reader.uint32();\n case ScalarType.SINT32:\n return reader.sint32();\n }\n}\nfunction writeField(field, value, writer, options) {\n assert(value !== undefined);\n const repeated = field.repeated;\n switch (field.kind) {\n case \"scalar\":\n case \"enum\":\n let scalarType = field.kind == \"enum\" ? ScalarType.INT32 : field.T;\n if (repeated) {\n assert(Array.isArray(value));\n if (field.packed) {\n writePacked(writer, scalarType, field.no, value);\n }\n else {\n for (const item of value) {\n writeScalar(writer, scalarType, field.no, item);\n }\n }\n }\n else {\n writeScalar(writer, scalarType, field.no, value);\n }\n break;\n case \"message\":\n if (repeated) {\n assert(Array.isArray(value));\n for (const item of value) {\n writeMessageField(writer, options, field, item);\n }\n }\n else {\n writeMessageField(writer, options, field, value);\n }\n break;\n case \"map\":\n assert(typeof value == \"object\" && value != null);\n for (const [key, val] of Object.entries(value)) {\n writeMapEntry(writer, options, field, key, val);\n }\n break;\n }\n}\nexport function writeMapEntry(writer, options, field, key, value) {\n writer.tag(field.no, 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 // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- we deliberately handle just the special cases for map keys\n switch (field.K) {\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n keyValue = Number.parseInt(key);\n break;\n case ScalarType.BOOL:\n assert(key == \"true\" || key == \"false\");\n keyValue = key == \"true\";\n break;\n }\n // write key, expecting key field number = 1\n writeScalar(writer, field.K, 1, keyValue);\n // write value, expecting value field number = 2\n switch (field.V.kind) {\n case \"scalar\":\n writeScalar(writer, field.V.T, 2, value);\n break;\n case \"enum\":\n writeScalar(writer, ScalarType.INT32, 2, value);\n break;\n case \"message\":\n assert(value !== undefined);\n writer.tag(2, WireType.LengthDelimited).bytes(value.toBinary(options));\n break;\n }\n writer.join();\n}\n// Value must not be undefined\nfunction writeMessageField(writer, options, field, value) {\n const message = wrapField(field.T, value);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (field.delimited)\n writer\n .tag(field.no, WireType.StartGroup)\n .raw(message.toBinary(options))\n .tag(field.no, WireType.EndGroup);\n else\n writer\n .tag(field.no, WireType.LengthDelimited)\n .bytes(message.toBinary(options));\n}\nfunction writeScalar(writer, type, fieldNo, value) {\n assert(value !== undefined);\n let [wireType, method] = scalarTypeInfo(type);\n writer.tag(fieldNo, wireType)[method](value);\n}\nfunction writePacked(writer, type, fieldNo, value) {\n if (!value.length) {\n return;\n }\n writer.tag(fieldNo, WireType.LengthDelimited).fork();\n let [, method] = scalarTypeInfo(type);\n for (let i = 0; i < value.length; i++) {\n writer[method](value[i]);\n }\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 for proto3 semantics\n *\n * If argument `value` is omitted, [2] is always false.\n */\n// TODO replace call-sites writeScalar() and writePacked(), then remove\nfunction scalarTypeInfo(type) {\n let wireType = WireType.Varint;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- INT32, UINT32, SINT32 are covered by the defaults\n switch (type) {\n case ScalarType.BYTES:\n case ScalarType.STRING:\n wireType = WireType.LengthDelimited;\n break;\n case ScalarType.DOUBLE:\n case ScalarType.FIXED64:\n case ScalarType.SFIXED64:\n wireType = WireType.Bit64;\n break;\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.FLOAT:\n wireType = WireType.Bit32;\n break;\n }\n const method = ScalarType[type].toLowerCase();\n return [wireType, method];\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { setEnumType } from \"./enum.js\";\nimport { Message } from \"../message.js\";\nimport { scalarEquals } from \"./scalars.js\";\nimport { ScalarType } from \"../scalar.js\";\nimport { isMessage } from \"../is-message.js\";\n/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-argument,no-case-declarations */\nexport function makeUtilCommon() {\n return {\n setEnumType,\n initPartial(source, target) {\n if (source === undefined) {\n return;\n }\n const type = target.getType();\n for (const member of type.fields.byMember()) {\n const localName = member.localName, t = target, s = source;\n if (s[localName] == null) {\n // TODO if source is a Message instance, we should use isFieldSet() here to support future field presence\n continue;\n }\n switch (member.kind) {\n case \"oneof\":\n const sk = s[localName].case;\n if (sk === undefined) {\n continue;\n }\n const sourceField = member.findField(sk);\n let val = s[localName].value;\n if (sourceField &&\n sourceField.kind == \"message\" &&\n !isMessage(val, sourceField.T)) {\n val = new sourceField.T(val);\n }\n else if (sourceField &&\n sourceField.kind === \"scalar\" &&\n sourceField.T === ScalarType.BYTES) {\n val = toU8Arr(val);\n }\n t[localName] = { case: sk, value: val };\n break;\n case \"scalar\":\n case \"enum\":\n let copy = s[localName];\n if (member.T === ScalarType.BYTES) {\n copy = member.repeated\n ? copy.map(toU8Arr)\n : toU8Arr(copy);\n }\n t[localName] = copy;\n break;\n case \"map\":\n switch (member.V.kind) {\n case \"scalar\":\n case \"enum\":\n if (member.V.T === ScalarType.BYTES) {\n for (const [k, v] of Object.entries(s[localName])) {\n t[localName][k] = toU8Arr(v);\n }\n }\n else {\n Object.assign(t[localName], s[localName]);\n }\n break;\n case \"message\":\n const messageType = member.V.T;\n for (const k of Object.keys(s[localName])) {\n let val = s[localName][k];\n if (!messageType.fieldWrapper) {\n // We only take partial input for messages that are not a wrapper type.\n // For those messages, we recursively normalize the partial input.\n val = new messageType(val);\n }\n t[localName][k] = val;\n }\n break;\n }\n break;\n case \"message\":\n const mt = member.T;\n if (member.repeated) {\n t[localName] = s[localName].map((val) => isMessage(val, mt) ? val : new mt(val));\n }\n else {\n const val = s[localName];\n if (mt.fieldWrapper) {\n if (\n // We can't use BytesValue.typeName as that will create a circular import\n mt.typeName === \"google.protobuf.BytesValue\") {\n t[localName] = toU8Arr(val);\n }\n else {\n t[localName] = val;\n }\n }\n else {\n t[localName] = isMessage(val, mt) ? val : new mt(val);\n }\n }\n break;\n }\n }\n },\n // TODO use isFieldSet() here to support future field presence\n equals(type, a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return type.fields.byMember().every((m) => {\n const va = a[m.localName];\n const vb = b[m.localName];\n if (m.repeated) {\n if (va.length !== vb.length) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- repeated fields are never \"map\"\n switch (m.kind) {\n case \"message\":\n return va.every((a, i) => m.T.equals(a, vb[i]));\n case \"scalar\":\n return va.every((a, i) => scalarEquals(m.T, a, vb[i]));\n case \"enum\":\n return va.every((a, i) => scalarEquals(ScalarType.INT32, a, vb[i]));\n }\n throw new Error(`repeated cannot contain ${m.kind}`);\n }\n switch (m.kind) {\n case \"message\":\n return m.T.equals(va, vb);\n case \"enum\":\n return scalarEquals(ScalarType.INT32, va, vb);\n case \"scalar\":\n return scalarEquals(m.T, va, vb);\n case \"oneof\":\n if (va.case !== vb.case) {\n return false;\n }\n const s = m.findField(va.case);\n if (s === undefined) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- oneof fields are never \"map\"\n switch (s.kind) {\n case \"message\":\n return s.T.equals(va.value, vb.value);\n case \"enum\":\n return scalarEquals(ScalarType.INT32, va.value, vb.value);\n case \"scalar\":\n return scalarEquals(s.T, va.value, vb.value);\n }\n throw new Error(`oneof cannot contain ${s.kind}`);\n case \"map\":\n const keys = Object.keys(va).concat(Object.keys(vb));\n switch (m.V.kind) {\n case \"message\":\n const messageType = m.V.T;\n return keys.every((k) => messageType.equals(va[k], vb[k]));\n case \"enum\":\n return keys.every((k) => scalarEquals(ScalarType.INT32, va[k], vb[k]));\n case \"scalar\":\n const scalarType = m.V.T;\n return keys.every((k) => scalarEquals(scalarType, va[k], vb[k]));\n }\n break;\n }\n });\n },\n // TODO use isFieldSet() here to support future field presence\n clone(message) {\n const type = message.getType(), target = new type(), any = target;\n for (const member of type.fields.byMember()) {\n const source = message[member.localName];\n let copy;\n if (member.repeated) {\n copy = source.map(cloneSingularField);\n }\n else if (member.kind == \"map\") {\n copy = any[member.localName];\n for (const [key, v] of Object.entries(source)) {\n copy[key] = cloneSingularField(v);\n }\n }\n else if (member.kind == \"oneof\") {\n const f = member.findField(source.case);\n copy = f\n ? { case: source.case, value: cloneSingularField(source.value) }\n : { case: undefined };\n }\n else {\n copy = cloneSingularField(source);\n }\n any[member.localName] = copy;\n }\n for (const uf of type.runtime.bin.listUnknownFields(message)) {\n type.runtime.bin.onUnknownField(any, uf.no, uf.wireType, uf.data);\n }\n return target;\n },\n };\n}\n// clone a single field value - i.e. the element type of repeated fields, the value type of maps\nfunction cloneSingularField(value) {\n if (value === undefined) {\n return value;\n }\n if (isMessage(value)) {\n return value.clone();\n }\n if (value instanceof Uint8Array) {\n const c = new Uint8Array(value.byteLength);\n c.set(value);\n return c;\n }\n return value;\n}\n// converts any ArrayLike to Uint8Array if necessary.\nfunction toU8Arr(input) {\n return input instanceof Uint8Array ? input : new Uint8Array(input);\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nexport class InternalFieldList {\n constructor(fields, normalizer) {\n this._fields = fields;\n this._normalizer = normalizer;\n }\n findJsonName(jsonName) {\n if (!this.jsonNames) {\n const t = {};\n for (const f of this.list()) {\n t[f.jsonName] = t[f.name] = f;\n }\n this.jsonNames = t;\n }\n return this.jsonNames[jsonName];\n }\n find(fieldNo) {\n if (!this.numbers) {\n const t = {};\n for (const f of this.list()) {\n t[f.no] = f;\n }\n this.numbers = t;\n }\n return this.numbers[fieldNo];\n }\n list() {\n if (!this.all) {\n this.all = this._normalizer(this._fields);\n }\n return this.all;\n }\n byNumber() {\n if (!this.numbersAsc) {\n this.numbersAsc = this.list()\n .concat()\n .sort((a, b) => a.no - b.no);\n }\n return this.numbersAsc;\n }\n byMember() {\n if (!this.members) {\n this.members = [];\n const a = this.members;\n let o;\n for (const f of this.list()) {\n if (f.oneof) {\n if (f.oneof !== o) {\n o = f.oneof;\n a.push(o);\n }\n }\n else {\n a.push(f);\n }\n }\n }\n return this.members;\n }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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 * Returns the name of a protobuf element in generated code.\n *\n * Field names - including oneofs - are converted to lowerCamelCase. For\n * messages, enumerations and services, the package name is stripped from\n * the type name. For nested messages and enumerations, the names are joined\n * with an underscore. For methods, the first character is made lowercase.\n */\nexport function localName(desc) {\n switch (desc.kind) {\n case \"field\":\n return localFieldName(desc.name, desc.oneof !== undefined);\n case \"oneof\":\n return localOneofName(desc.name);\n case \"enum\":\n case \"message\":\n case \"service\":\n case \"extension\": {\n const pkg = desc.file.proto.package;\n const offset = pkg === undefined ? 0 : pkg.length + 1;\n const name = desc.typeName.substring(offset).replace(/\\./g, \"_\");\n // For services, we only care about safe identifiers, not safe object properties,\n // but we have shipped v1 with a bug that respected object properties, and we\n // do not want to introduce a breaking change, so we continue to escape for\n // safe object properties.\n // See https://github.com/bufbuild/protobuf-es/pull/391\n return safeObjectProperty(safeIdentifier(name));\n }\n case \"enum_value\": {\n let name = desc.name;\n const sharedPrefix = desc.parent.sharedPrefix;\n if (sharedPrefix !== undefined) {\n name = name.substring(sharedPrefix.length);\n }\n return safeObjectProperty(name);\n }\n case \"rpc\": {\n let name = desc.name;\n if (name.length == 0) {\n return name;\n }\n name = name[0].toLowerCase() + name.substring(1);\n return safeObjectProperty(name);\n }\n }\n}\n/**\n * Returns the name of a field in generated code.\n */\nexport function localFieldName(protoName, inOneof) {\n const name = protoCamelCase(protoName);\n if (inOneof) {\n // oneof member names are not properties, but values of the `case` property.\n return name;\n }\n return safeObjectProperty(safeMessageProperty(name));\n}\n/**\n * Returns the name of a oneof group in generated code.\n */\nexport function localOneofName(protoName) {\n return localFieldName(protoName, false);\n}\n/**\n * Returns the JSON name for a protobuf field, exactly like protoc does.\n */\nexport const fieldJsonName = protoCamelCase;\n/**\n * Finds a prefix shared by enum values, for example `MY_ENUM_` for\n * `enum MyEnum {MY_ENUM_A=0; MY_ENUM_B=1;}`.\n */\nexport function findEnumSharedPrefix(enumName, valueNames) {\n const prefix = camelToSnakeCase(enumName) + \"_\";\n for (const name of valueNames) {\n if (!name.toLowerCase().startsWith(prefix)) {\n return undefined;\n }\n const shortName = name.substring(prefix.length);\n if (shortName.length == 0) {\n return undefined;\n }\n if (/^\\d/.test(shortName)) {\n // identifiers must not start with numbers\n return undefined;\n }\n }\n return prefix;\n}\n/**\n * Converts lowerCamelCase or UpperCamelCase into lower_snake_case.\n * This is used to find shared prefixes in an enum.\n */\nfunction camelToSnakeCase(camel) {\n return (camel.substring(0, 1) + camel.substring(1).replace(/[A-Z]/g, (c) => \"_\" + c)).toLowerCase();\n}\n/**\n * Converts snake_case to protoCamelCase according to the convention\n * used by protoc to convert a field name to a JSON name.\n */\nfunction protoCamelCase(snakeCase) {\n let capNext = false;\n const b = [];\n for (let i = 0; i < snakeCase.length; i++) {\n let c = snakeCase.charAt(i);\n switch (c) {\n case \"_\":\n capNext = true;\n break;\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n b.push(c);\n capNext = false;\n break;\n default:\n if (capNext) {\n capNext = false;\n c = c.toUpperCase();\n }\n b.push(c);\n break;\n }\n }\n return b.join(\"\");\n}\n/**\n * Names that cannot be used for identifiers, such as class names,\n * but _can_ be used for object properties.\n */\nconst reservedIdentifiers = new Set([\n // ECMAScript 2015 keywords\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // ECMAScript 2015 future reserved keywords\n \"enum\",\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n // Class name cannot be 'Object' when targeting ES5 with module CommonJS\n \"Object\",\n // TypeScript keywords that cannot be used for types (as opposed to variables)\n \"bigint\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n // Identifiers reserved for the runtime, so we can generate legible code\n \"globalThis\",\n \"Uint8Array\",\n \"Partial\",\n]);\n/**\n * Names that cannot be used for object properties because they are reserved\n * by built-in JavaScript properties.\n */\nconst reservedObjectProperties = new Set([\n // names reserved by JavaScript\n \"constructor\",\n \"toString\",\n \"toJSON\",\n \"valueOf\",\n]);\n/**\n * Names that cannot be used for object properties because they are reserved\n * by the runtime.\n */\nconst reservedMessageProperties = new Set([\n // names reserved by the runtime\n \"getType\",\n \"clone\",\n \"equals\",\n \"fromBinary\",\n \"fromJson\",\n \"fromJsonString\",\n \"toBinary\",\n \"toJson\",\n \"toJsonString\",\n // names reserved by the runtime for the future\n \"toObject\",\n]);\nconst fallback = (name) => `${name}$`;\n/**\n * Will wrap names that are Object prototype properties or names reserved\n * for `Message`s.\n */\nconst safeMessageProperty = (name) => {\n if (reservedMessageProperties.has(name)) {\n return fallback(name);\n }\n return name;\n};\n/**\n * Names that cannot be used for object properties because they are reserved\n * by built-in JavaScript properties.\n */\nexport const safeObjectProperty = (name) => {\n if (reservedObjectProperties.has(name)) {\n return fallback(name);\n }\n return name;\n};\n/**\n * Names that can be used for identifiers or class properties\n */\nexport const safeIdentifier = (name) => {\n if (reservedIdentifiers.has(name)) {\n return fallback(name);\n }\n return name;\n};\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { localOneofName } from \"./names.js\";\nimport { assert } from \"./assert.js\";\nexport class InternalOneofInfo {\n constructor(name) {\n this.kind = \"oneof\";\n this.repeated = false;\n this.packed = false;\n this.opt = false;\n this.req = false;\n this.default = undefined;\n this.fields = [];\n this.name = name;\n this.localName = localOneofName(name);\n }\n addField(field) {\n assert(field.oneof === this, `field ${field.name} not one of ${this.name}`);\n this.fields.push(field);\n }\n findField(localName) {\n if (!this._lookup) {\n this._lookup = Object.create(null);\n for (let i = 0; i < this.fields.length; i++) {\n this._lookup[this.fields[i].localName] = this.fields[i];\n }\n }\n return this._lookup[localName];\n }\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { makeProtoRuntime } from \"./private/proto-runtime.js\";\nimport { InternalFieldList } from \"./private/field-list.js\";\nimport { scalarZeroValue } from \"./private/scalars.js\";\nimport { normalizeFieldInfos } from \"./private/field-normalize.js\";\n/**\n * Provides functionality for messages defined with the proto3 syntax.\n */\nexport const proto3 = makeProtoRuntime(\"proto3\", (fields) => {\n return new InternalFieldList(fields, (source) => normalizeFieldInfos(source, true));\n}, \n// TODO merge with proto2 and initExtensionField, also see initPartial, equals, clone\n(target) => {\n for (const member of target.getType().fields.byMember()) {\n if (member.opt) {\n continue;\n }\n const name = member.localName, t = target;\n if (member.repeated) {\n t[name] = [];\n continue;\n }\n switch (member.kind) {\n case \"oneof\":\n t[name] = { case: undefined };\n break;\n case \"enum\":\n t[name] = 0;\n break;\n case \"map\":\n t[name] = {};\n break;\n case \"scalar\":\n t[name] = scalarZeroValue(member.T, member.L);\n break;\n case \"message\":\n // message fields are always optional in proto3\n break;\n }\n }\n});\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { getEnumType, makeEnum, makeEnumType } from \"./enum.js\";\nimport { makeMessageType } from \"./message-type.js\";\nimport { makeExtension } from \"./extensions.js\";\nimport { makeJsonFormat } from \"./json-format.js\";\nimport { makeBinaryFormat } from \"./binary-format.js\";\nimport { makeUtilCommon } from \"./util-common.js\";\nexport function makeProtoRuntime(syntax, newFieldList, initFields) {\n return {\n syntax,\n json: makeJsonFormat(),\n bin: makeBinaryFormat(),\n util: Object.assign(Object.assign({}, makeUtilCommon()), { newFieldList,\n initFields }),\n makeMessageType(typeName, fields, opt) {\n return makeMessageType(this, typeName, fields, opt);\n },\n makeEnum,\n makeEnumType,\n getEnumType,\n makeExtension(typeName, extendee, field) {\n return makeExtension(this, typeName, extendee, field);\n },\n };\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { InternalOneofInfo } from \"./field.js\";\nimport { fieldJsonName, localFieldName } from \"./names.js\";\nimport { LongType, ScalarType } from \"../scalar.js\";\n/**\n * Convert a collection of field info to an array of normalized FieldInfo.\n *\n * The argument `packedByDefault` specifies whether fields that do not specify\n * `packed` should be packed (proto3) or unpacked (proto2).\n */\nexport function normalizeFieldInfos(fieldInfos, packedByDefault) {\n var _a, _b, _c, _d, _e, _f;\n const r = [];\n let o;\n for (const field of typeof fieldInfos == \"function\"\n ? fieldInfos()\n : fieldInfos) {\n const f = field;\n f.localName = localFieldName(field.name, field.oneof !== undefined);\n f.jsonName = (_a = field.jsonName) !== null && _a !== void 0 ? _a : fieldJsonName(field.name);\n f.repeated = (_b = field.repeated) !== null && _b !== void 0 ? _b : false;\n if (field.kind == \"scalar\") {\n f.L = (_c = field.L) !== null && _c !== void 0 ? _c : LongType.BIGINT;\n }\n f.delimited = (_d = field.delimited) !== null && _d !== void 0 ? _d : false;\n f.req = (_e = field.req) !== null && _e !== void 0 ? _e : false;\n f.opt = (_f = field.opt) !== null && _f !== void 0 ? _f : false;\n if (field.packed === undefined) {\n if (packedByDefault) {\n f.packed =\n field.kind == \"enum\" ||\n (field.kind == \"scalar\" &&\n field.T != ScalarType.BYTES &&\n field.T != ScalarType.STRING);\n }\n else {\n f.packed = false;\n }\n }\n // We do not surface options at this time\n // f.options = field.options ?? emptyReadonlyObject;\n if (field.oneof !== undefined) {\n const ooname = typeof field.oneof == \"string\" ? field.oneof : field.oneof.name;\n if (!o || o.name != ooname) {\n o = new InternalOneofInfo(ooname);\n }\n f.oneof = o;\n o.addField(f);\n }\n r.push(f);\n }\n return r;\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { Message } from \"../message.js\";\n/**\n * Create a new message type using the given runtime.\n */\nexport function makeMessageType(runtime, typeName, fields, opt) {\n var _a;\n const localName = (_a = opt === null || opt === void 0 ? void 0 : opt.localName) !== null && _a !== void 0 ? _a : typeName.substring(typeName.lastIndexOf(\".\") + 1);\n const type = {\n [localName]: function (data) {\n runtime.util.initFields(this);\n runtime.util.initPartial(data, this);\n },\n }[localName];\n Object.setPrototypeOf(type.prototype, new Message());\n Object.assign(type, {\n runtime,\n typeName,\n fields: runtime.util.newFieldList(fields),\n fromBinary(bytes, options) {\n return new type().fromBinary(bytes, options);\n },\n fromJson(jsonValue, options) {\n return new type().fromJson(jsonValue, options);\n },\n fromJsonString(jsonString, options) {\n return new type().fromJsonString(jsonString, options);\n },\n equals(a, b) {\n return runtime.util.equals(type, a, b);\n },\n });\n return type;\n}\n","// Copyright 2021-2024 Buf Technologies, Inc.\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// http://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.\nimport { Message } from \"../../message.js\";\nimport { protoInt64 } from \"../../proto-int64.js\";\nimport { proto3 } from \"../../proto3.js\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from message google.protobuf.Timestamp\n */\nexport class Timestamp extends Message {\n constructor(data) {\n super();\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from field: int64 seconds = 1;\n */\n this.seconds = protoInt64.zero;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from field: int32 nanos = 2;\n */\n this.nanos = 0;\n proto3.util.initPartial(data, this);\n }\n fromJson(json, options) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: ${proto3.json.debug(json)}`);\n }\n const 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 if (!matches) {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);\n }\n const ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms)) {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);\n }\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n this.seconds = protoInt64.parse(ms / 1000);\n this.nanos = 0;\n if (matches[7]) {\n this.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n }\n return this;\n }\n toJson(options) {\n const ms = Number(this.seconds) * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n if (this.nanos < 0) {\n throw new Error(`cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative`);\n }\n let z = \"Z\";\n if (this.nanos > 0) {\n const nanosStr = (this.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\") {\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n }\n else if (nanosStr.substring(6) === \"000\") {\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n }\n else {\n z = \".\" + nanosStr + \"Z\";\n }\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n toDate() {\n return new Date(Number(this.seconds) * 1000 + Math.ceil(this.nanos / 1000000));\n }\n static now() {\n return Timestamp.fromDate(new Date());\n }\n static fromDate(date) {\n const ms = date.getTime();\n return new Timestamp({\n seconds: protoInt64.parse(Math.floor(ms / 1000)),\n nanos: (ms % 1000) * 1000000,\n });\n }\n static fromBinary(bytes, options) {\n return new Timestamp().fromBinary(bytes, options);\n }\n static fromJson(jsonValue, options) {\n return new Timestamp().fromJson(jsonValue, options);\n }\n static fromJsonString(jsonString, options) {\n return new Timestamp().fromJsonString(jsonString, options);\n }\n static equals(a, b) {\n return proto3.util.equals(Timestamp, a, b);\n }\n}\nTimestamp.runtime = proto3;\nTimestamp.typeName = \"google.protobuf.Timestamp\";\nTimestamp.fields = proto3.util.newFieldList(() => [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n]);\n","import { proto3, Timestamp, Duration } from '@bufbuild/protobuf';\nexport { protoInt64 } from '@bufbuild/protobuf';\n\nconst MetricLabel = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.MetricLabel\",\n [\n { no: 0, name: \"AGENTS_LLM_TTFT\" },\n { no: 1, name: \"AGENTS_STT_TTFT\" },\n { no: 2, name: \"AGENTS_TTS_TTFB\" },\n { no: 3, name: \"CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT\" },\n { no: 4, name: \"CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION\" },\n { no: 5, name: \"CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT\" },\n { no: 6, name: \"CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION\" },\n { no: 7, name: \"CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES\" },\n { no: 8, name: \"CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES\" },\n { no: 9, name: \"CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS\" },\n { no: 10, name: \"CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT\" },\n { no: 11, name: \"CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION\" },\n { no: 12, name: \"CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY\" },\n { no: 13, name: \"CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT\" },\n { no: 14, name: \"CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH\" },\n { no: 15, name: \"CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU\" },\n { no: 16, name: \"CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER\" },\n { no: 17, name: \"PUBLISHER_RTT\" },\n { no: 18, name: \"SERVER_MESH_RTT\" },\n { no: 19, name: \"SUBSCRIBER_RTT\" },\n { no: 4096, name: \"METRIC_LABEL_PREDEFINED_MAX_VALUE\" }\n ]\n);\nconst MetricsBatch = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MetricsBatch\",\n () => [\n {\n no: 1,\n name: \"timestamp_ms\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 2, name: \"normalized_timestamp\", kind: \"message\", T: Timestamp },\n { no: 3, name: \"str_data\", kind: \"scalar\", T: 9, repeated: true },\n { no: 4, name: \"time_series\", kind: \"message\", T: TimeSeriesMetric, repeated: true },\n { no: 5, name: \"events\", kind: \"message\", T: EventMetric, repeated: true }\n ]\n);\nconst TimeSeriesMetric = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TimeSeriesMetric\",\n () => [\n {\n no: 1,\n name: \"label\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 2,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 4, name: \"samples\", kind: \"message\", T: MetricSample, repeated: true },\n {\n no: 5,\n name: \"rid\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst MetricSample = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MetricSample\",\n () => [\n {\n no: 1,\n name: \"timestamp_ms\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 2, name: \"normalized_timestamp\", kind: \"message\", T: Timestamp },\n {\n no: 3,\n name: \"value\",\n kind: \"scalar\",\n T: 2\n /* ScalarType.FLOAT */\n }\n ]\n);\nconst EventMetric = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.EventMetric\",\n () => [\n {\n no: 1,\n name: \"label\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 2,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"start_timestamp_ms\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 5, name: \"end_timestamp_ms\", kind: \"scalar\", T: 3, opt: true },\n { no: 6, name: \"normalized_start_timestamp\", kind: \"message\", T: Timestamp },\n { no: 7, name: \"normalized_end_timestamp\", kind: \"message\", T: Timestamp, opt: true },\n {\n no: 8,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"rid\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\n\nconst AudioCodec = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.AudioCodec\",\n [\n { no: 0, name: \"DEFAULT_AC\" },\n { no: 1, name: \"OPUS\" },\n { no: 2, name: \"AAC\" }\n ]\n);\nconst VideoCodec = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.VideoCodec\",\n [\n { no: 0, name: \"DEFAULT_VC\" },\n { no: 1, name: \"H264_BASELINE\" },\n { no: 2, name: \"H264_MAIN\" },\n { no: 3, name: \"H264_HIGH\" },\n { no: 4, name: \"VP8\" }\n ]\n);\nconst ImageCodec = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ImageCodec\",\n [\n { no: 0, name: \"IC_DEFAULT\" },\n { no: 1, name: \"IC_JPEG\" }\n ]\n);\nconst TrackType = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.TrackType\",\n [\n { no: 0, name: \"AUDIO\" },\n { no: 1, name: \"VIDEO\" },\n { no: 2, name: \"DATA\" }\n ]\n);\nconst TrackSource = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.TrackSource\",\n [\n { no: 0, name: \"UNKNOWN\" },\n { no: 1, name: \"CAMERA\" },\n { no: 2, name: \"MICROPHONE\" },\n { no: 3, name: \"SCREEN_SHARE\" },\n { no: 4, name: \"SCREEN_SHARE_AUDIO\" }\n ]\n);\nconst VideoQuality = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.VideoQuality\",\n [\n { no: 0, name: \"LOW\" },\n { no: 1, name: \"MEDIUM\" },\n { no: 2, name: \"HIGH\" },\n { no: 3, name: \"OFF\" }\n ]\n);\nconst ConnectionQuality = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ConnectionQuality\",\n [\n { no: 0, name: \"POOR\" },\n { no: 1, name: \"GOOD\" },\n { no: 2, name: \"EXCELLENT\" },\n { no: 3, name: \"LOST\" }\n ]\n);\nconst ClientConfigSetting = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ClientConfigSetting\",\n [\n { no: 0, name: \"UNSET\" },\n { no: 1, name: \"DISABLED\" },\n { no: 2, name: \"ENABLED\" }\n ]\n);\nconst DisconnectReason = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.DisconnectReason\",\n [\n { no: 0, name: \"UNKNOWN_REASON\" },\n { no: 1, name: \"CLIENT_INITIATED\" },\n { no: 2, name: \"DUPLICATE_IDENTITY\" },\n { no: 3, name: \"SERVER_SHUTDOWN\" },\n { no: 4, name: \"PARTICIPANT_REMOVED\" },\n { no: 5, name: \"ROOM_DELETED\" },\n { no: 6, name: \"STATE_MISMATCH\" },\n { no: 7, name: \"JOIN_FAILURE\" },\n { no: 8, name: \"MIGRATION\" },\n { no: 9, name: \"SIGNAL_CLOSE\" },\n { no: 10, name: \"ROOM_CLOSED\" },\n { no: 11, name: \"USER_UNAVAILABLE\" },\n { no: 12, name: \"USER_REJECTED\" },\n { no: 13, name: \"SIP_TRUNK_FAILURE\" }\n ]\n);\nconst ReconnectReason = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ReconnectReason\",\n [\n { no: 0, name: \"RR_UNKNOWN\" },\n { no: 1, name: \"RR_SIGNAL_DISCONNECTED\" },\n { no: 2, name: \"RR_PUBLISHER_FAILED\" },\n { no: 3, name: \"RR_SUBSCRIBER_FAILED\" },\n { no: 4, name: \"RR_SWITCH_CANDIDATE\" }\n ]\n);\nconst SubscriptionError = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SubscriptionError\",\n [\n { no: 0, name: \"SE_UNKNOWN\" },\n { no: 1, name: \"SE_CODEC_UNSUPPORTED\" },\n { no: 2, name: \"SE_TRACK_NOTFOUND\" }\n ]\n);\nconst AudioTrackFeature = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.AudioTrackFeature\",\n [\n { no: 0, name: \"TF_STEREO\" },\n { no: 1, name: \"TF_NO_DTX\" },\n { no: 2, name: \"TF_AUTO_GAIN_CONTROL\" },\n { no: 3, name: \"TF_ECHO_CANCELLATION\" },\n { no: 4, name: \"TF_NOISE_SUPPRESSION\" },\n { no: 5, name: \"TF_ENHANCED_NOISE_CANCELLATION\" }\n ]\n);\nconst Room = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Room\",\n () => [\n {\n no: 1,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"empty_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 14,\n name: \"departure_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"max_participants\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"creation_time\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 6,\n name: \"turn_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 7, name: \"enabled_codecs\", kind: \"message\", T: Codec, repeated: true },\n {\n no: 8,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"num_participants\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 11,\n name: \"num_publishers\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 10,\n name: \"active_recording\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 13, name: \"version\", kind: \"message\", T: TimedVersion }\n ]\n);\nconst Codec = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Codec\",\n () => [\n {\n no: 1,\n name: \"mime\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"fmtp_line\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst PlayoutDelay = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.PlayoutDelay\",\n () => [\n {\n no: 1,\n name: \"enabled\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 2,\n name: \"min\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"max\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst ParticipantPermission = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ParticipantPermission\",\n () => [\n {\n no: 1,\n name: \"can_subscribe\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 2,\n name: \"can_publish\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 3,\n name: \"can_publish_data\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 9, name: \"can_publish_sources\", kind: \"enum\", T: proto3.getEnumType(TrackSource), repeated: true },\n {\n no: 7,\n name: \"hidden\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 8,\n name: \"recorder\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 10,\n name: \"can_update_metadata\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 11,\n name: \"agent\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 12,\n name: \"can_subscribe_metrics\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst ParticipantInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ParticipantInfo\",\n () => [\n {\n no: 1,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"state\", kind: \"enum\", T: proto3.getEnumType(ParticipantInfo_State) },\n { no: 4, name: \"tracks\", kind: \"message\", T: TrackInfo, repeated: true },\n {\n no: 5,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"joined_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 9,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"version\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 11, name: \"permission\", kind: \"message\", T: ParticipantPermission },\n {\n no: 12,\n name: \"region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 13,\n name: \"is_publisher\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 14, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(ParticipantInfo_Kind) },\n { no: 15, name: \"attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 16, name: \"disconnect_reason\", kind: \"enum\", T: proto3.getEnumType(DisconnectReason) }\n ]\n);\nconst ParticipantInfo_State = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ParticipantInfo.State\",\n [\n { no: 0, name: \"JOINING\" },\n { no: 1, name: \"JOINED\" },\n { no: 2, name: \"ACTIVE\" },\n { no: 3, name: \"DISCONNECTED\" }\n ]\n);\nconst ParticipantInfo_Kind = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ParticipantInfo.Kind\",\n [\n { no: 0, name: \"STANDARD\" },\n { no: 1, name: \"INGRESS\" },\n { no: 2, name: \"EGRESS\" },\n { no: 3, name: \"SIP\" },\n { no: 4, name: \"AGENT\" }\n ]\n);\nconst Encryption = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Encryption\",\n []\n);\nconst Encryption_Type = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.Encryption.Type\",\n [\n { no: 0, name: \"NONE\" },\n { no: 1, name: \"GCM\" },\n { no: 2, name: \"CUSTOM\" }\n ]\n);\nconst SimulcastCodecInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SimulcastCodecInfo\",\n () => [\n {\n no: 1,\n name: \"mime_type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"mid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"cid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"layers\", kind: \"message\", T: VideoLayer, repeated: true }\n ]\n);\nconst TrackInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackInfo\",\n () => [\n {\n no: 1,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"type\", kind: \"enum\", T: proto3.getEnumType(TrackType) },\n {\n no: 3,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"muted\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 5,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 6,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 7,\n name: \"simulcast\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 8,\n name: \"disable_dtx\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 9, name: \"source\", kind: \"enum\", T: proto3.getEnumType(TrackSource) },\n { no: 10, name: \"layers\", kind: \"message\", T: VideoLayer, repeated: true },\n {\n no: 11,\n name: \"mime_type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 12,\n name: \"mid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 13, name: \"codecs\", kind: \"message\", T: SimulcastCodecInfo, repeated: true },\n {\n no: 14,\n name: \"stereo\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 15,\n name: \"disable_red\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 16, name: \"encryption\", kind: \"enum\", T: proto3.getEnumType(Encryption_Type) },\n {\n no: 17,\n name: \"stream\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 18, name: \"version\", kind: \"message\", T: TimedVersion },\n { no: 19, name: \"audio_features\", kind: \"enum\", T: proto3.getEnumType(AudioTrackFeature), repeated: true }\n ]\n);\nconst VideoLayer = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.VideoLayer\",\n () => [\n { no: 1, name: \"quality\", kind: \"enum\", T: proto3.getEnumType(VideoQuality) },\n {\n no: 2,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"bitrate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"ssrc\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst DataPacket = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataPacket\",\n () => [\n { no: 1, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(DataPacket_Kind) },\n {\n no: 4,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"destination_identities\", kind: \"scalar\", T: 9, repeated: true },\n { no: 2, name: \"user\", kind: \"message\", T: UserPacket, oneof: \"value\" },\n { no: 3, name: \"speaker\", kind: \"message\", T: ActiveSpeakerUpdate, oneof: \"value\" },\n { no: 6, name: \"sip_dtmf\", kind: \"message\", T: SipDTMF, oneof: \"value\" },\n { no: 7, name: \"transcription\", kind: \"message\", T: Transcription, oneof: \"value\" },\n { no: 8, name: \"metrics\", kind: \"message\", T: MetricsBatch, oneof: \"value\" },\n { no: 9, name: \"chat_message\", kind: \"message\", T: ChatMessage, oneof: \"value\" },\n { no: 10, name: \"rpc_request\", kind: \"message\", T: RpcRequest, oneof: \"value\" },\n { no: 11, name: \"rpc_ack\", kind: \"message\", T: RpcAck, oneof: \"value\" },\n { no: 12, name: \"rpc_response\", kind: \"message\", T: RpcResponse, oneof: \"value\" },\n { no: 13, name: \"stream_header\", kind: \"message\", T: DataStream_Header, oneof: \"value\" },\n { no: 14, name: \"stream_chunk\", kind: \"message\", T: DataStream_Chunk, oneof: \"value\" }\n ]\n);\nconst DataPacket_Kind = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.DataPacket.Kind\",\n [\n { no: 0, name: \"RELIABLE\" },\n { no: 1, name: \"LOSSY\" }\n ]\n);\nconst ActiveSpeakerUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ActiveSpeakerUpdate\",\n () => [\n { no: 1, name: \"speakers\", kind: \"message\", T: SpeakerInfo, repeated: true }\n ]\n);\nconst SpeakerInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SpeakerInfo\",\n () => [\n {\n no: 1,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"level\",\n kind: \"scalar\",\n T: 2\n /* ScalarType.FLOAT */\n },\n {\n no: 3,\n name: \"active\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst UserPacket = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UserPacket\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"payload\",\n kind: \"scalar\",\n T: 12\n /* ScalarType.BYTES */\n },\n { no: 3, name: \"destination_sids\", kind: \"scalar\", T: 9, repeated: true },\n { no: 6, name: \"destination_identities\", kind: \"scalar\", T: 9, repeated: true },\n { no: 4, name: \"topic\", kind: \"scalar\", T: 9, opt: true },\n { no: 8, name: \"id\", kind: \"scalar\", T: 9, opt: true },\n { no: 9, name: \"start_time\", kind: \"scalar\", T: 4, opt: true },\n { no: 10, name: \"end_time\", kind: \"scalar\", T: 4, opt: true }\n ]\n);\nconst SipDTMF = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SipDTMF\",\n () => [\n {\n no: 3,\n name: \"code\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"digit\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst Transcription = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Transcription\",\n () => [\n {\n no: 2,\n name: \"transcribed_participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"track_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"segments\", kind: \"message\", T: TranscriptionSegment, repeated: true }\n ]\n);\nconst TranscriptionSegment = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TranscriptionSegment\",\n () => [\n {\n no: 1,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"text\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"start_time\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 4,\n name: \"end_time\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 5,\n name: \"final\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 6,\n name: \"language\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ChatMessage = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ChatMessage\",\n () => [\n {\n no: 1,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 3, name: \"edit_timestamp\", kind: \"scalar\", T: 3, opt: true },\n {\n no: 4,\n name: \"message\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"deleted\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 6,\n name: \"generated\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst RpcRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RpcRequest\",\n () => [\n {\n no: 1,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"method\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"payload\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"response_timeout_ms\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"version\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst RpcAck = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RpcAck\",\n () => [\n {\n no: 1,\n name: \"request_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst RpcResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RpcResponse\",\n () => [\n {\n no: 1,\n name: \"request_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"payload\", kind: \"scalar\", T: 9, oneof: \"value\" },\n { no: 3, name: \"error\", kind: \"message\", T: RpcError, oneof: \"value\" }\n ]\n);\nconst RpcError = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RpcError\",\n () => [\n {\n no: 1,\n name: \"code\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 2,\n name: \"message\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"data\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ParticipantTracks = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ParticipantTracks\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"track_sids\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ServerInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ServerInfo\",\n () => [\n { no: 1, name: \"edition\", kind: \"enum\", T: proto3.getEnumType(ServerInfo_Edition) },\n {\n no: 2,\n name: \"version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"protocol\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 4,\n name: \"region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"node_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"debug_info\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"agent_protocol\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n }\n ]\n);\nconst ServerInfo_Edition = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ServerInfo.Edition\",\n [\n { no: 0, name: \"Standard\" },\n { no: 1, name: \"Cloud\" }\n ]\n);\nconst ClientInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ClientInfo\",\n () => [\n { no: 1, name: \"sdk\", kind: \"enum\", T: proto3.getEnumType(ClientInfo_SDK) },\n {\n no: 2,\n name: \"version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"protocol\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 4,\n name: \"os\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"os_version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"device_model\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"browser\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"browser_version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"address\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"network\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"other_sdks\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ClientInfo_SDK = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ClientInfo.SDK\",\n [\n { no: 0, name: \"UNKNOWN\" },\n { no: 1, name: \"JS\" },\n { no: 2, name: \"SWIFT\" },\n { no: 3, name: \"ANDROID\" },\n { no: 4, name: \"FLUTTER\" },\n { no: 5, name: \"GO\" },\n { no: 6, name: \"UNITY\" },\n { no: 7, name: \"REACT_NATIVE\" },\n { no: 8, name: \"RUST\" },\n { no: 9, name: \"PYTHON\" },\n { no: 10, name: \"CPP\" },\n { no: 11, name: \"UNITY_WEB\" },\n { no: 12, name: \"NODE\" }\n ]\n);\nconst ClientConfiguration = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ClientConfiguration\",\n () => [\n { no: 1, name: \"video\", kind: \"message\", T: VideoConfiguration },\n { no: 2, name: \"screen\", kind: \"message\", T: VideoConfiguration },\n { no: 3, name: \"resume_connection\", kind: \"enum\", T: proto3.getEnumType(ClientConfigSetting) },\n { no: 4, name: \"disabled_codecs\", kind: \"message\", T: DisabledCodecs },\n { no: 5, name: \"force_relay\", kind: \"enum\", T: proto3.getEnumType(ClientConfigSetting) }\n ]\n);\nconst VideoConfiguration = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.VideoConfiguration\",\n () => [\n { no: 1, name: \"hardware_encoder\", kind: \"enum\", T: proto3.getEnumType(ClientConfigSetting) }\n ]\n);\nconst DisabledCodecs = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DisabledCodecs\",\n () => [\n { no: 1, name: \"codecs\", kind: \"message\", T: Codec, repeated: true },\n { no: 2, name: \"publish\", kind: \"message\", T: Codec, repeated: true }\n ]\n);\nconst RTPDrift = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RTPDrift\",\n () => [\n { no: 1, name: \"start_time\", kind: \"message\", T: Timestamp },\n { no: 2, name: \"end_time\", kind: \"message\", T: Timestamp },\n {\n no: 3,\n name: \"duration\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 4,\n name: \"start_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 5,\n name: \"end_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 6,\n name: \"rtp_clock_ticks\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 7,\n name: \"drift_samples\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 8,\n name: \"drift_ms\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 9,\n name: \"clock_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n }\n ]\n);\nconst RTPStats = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RTPStats\",\n () => [\n { no: 1, name: \"start_time\", kind: \"message\", T: Timestamp },\n { no: 2, name: \"end_time\", kind: \"message\", T: Timestamp },\n {\n no: 3,\n name: \"duration\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 4,\n name: \"packets\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"packet_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 6,\n name: \"bytes\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 39,\n name: \"header_bytes\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 7,\n name: \"bitrate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 8,\n name: \"packets_lost\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 9,\n name: \"packet_loss_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 10,\n name: \"packet_loss_percentage\",\n kind: \"scalar\",\n T: 2\n /* ScalarType.FLOAT */\n },\n {\n no: 11,\n name: \"packets_duplicate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 12,\n name: \"packet_duplicate_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 13,\n name: \"bytes_duplicate\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 40,\n name: \"header_bytes_duplicate\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 14,\n name: \"bitrate_duplicate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 15,\n name: \"packets_padding\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 16,\n name: \"packet_padding_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 17,\n name: \"bytes_padding\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 41,\n name: \"header_bytes_padding\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 18,\n name: \"bitrate_padding\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 19,\n name: \"packets_out_of_order\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 20,\n name: \"frames\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 21,\n name: \"frame_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 22,\n name: \"jitter_current\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n {\n no: 23,\n name: \"jitter_max\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n { no: 24, name: \"gap_histogram\", kind: \"map\", K: 5, V: {\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n } },\n {\n no: 25,\n name: \"nacks\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 37,\n name: \"nack_acks\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 26,\n name: \"nack_misses\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 38,\n name: \"nack_repeated\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 27,\n name: \"plis\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 28, name: \"last_pli\", kind: \"message\", T: Timestamp },\n {\n no: 29,\n name: \"firs\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 30, name: \"last_fir\", kind: \"message\", T: Timestamp },\n {\n no: 31,\n name: \"rtt_current\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 32,\n name: \"rtt_max\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 33,\n name: \"key_frames\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 34, name: \"last_key_frame\", kind: \"message\", T: Timestamp },\n {\n no: 35,\n name: \"layer_lock_plis\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 36, name: \"last_layer_lock_pli\", kind: \"message\", T: Timestamp },\n { no: 44, name: \"packet_drift\", kind: \"message\", T: RTPDrift },\n { no: 45, name: \"ntp_report_drift\", kind: \"message\", T: RTPDrift },\n { no: 46, name: \"rebased_report_drift\", kind: \"message\", T: RTPDrift },\n { no: 47, name: \"received_report_drift\", kind: \"message\", T: RTPDrift }\n ]\n);\nconst RTCPSenderReportState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RTCPSenderReportState\",\n () => [\n {\n no: 1,\n name: \"rtp_timestamp\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 2,\n name: \"rtp_timestamp_ext\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 3,\n name: \"ntp_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 4,\n name: \"at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 5,\n name: \"at_adjusted\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 6,\n name: \"packets\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 7,\n name: \"octets\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n }\n ]\n);\nconst RTPForwarderState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RTPForwarderState\",\n () => [\n {\n no: 1,\n name: \"started\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 2,\n name: \"reference_layer_spatial\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 3,\n name: \"pre_start_time\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 4,\n name: \"ext_first_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 5,\n name: \"dummy_start_timestamp_offset\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n { no: 6, name: \"rtp_munger\", kind: \"message\", T: RTPMungerState },\n { no: 7, name: \"vp8_munger\", kind: \"message\", T: VP8MungerState, oneof: \"codec_munger\" },\n { no: 8, name: \"sender_report_state\", kind: \"message\", T: RTCPSenderReportState, repeated: true }\n ]\n);\nconst RTPMungerState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RTPMungerState\",\n () => [\n {\n no: 1,\n name: \"ext_last_sequence_number\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 2,\n name: \"ext_second_last_sequence_number\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 3,\n name: \"ext_last_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 4,\n name: \"ext_second_last_timestamp\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 5,\n name: \"last_marker\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 6,\n name: \"second_last_marker\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst VP8MungerState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.VP8MungerState\",\n () => [\n {\n no: 1,\n name: \"ext_last_picture_id\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 2,\n name: \"picture_id_used\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 3,\n name: \"last_tl0_pic_idx\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"tl0_pic_idx_used\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 5,\n name: \"tid_used\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 6,\n name: \"last_key_idx\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 7,\n name: \"key_idx_used\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst TimedVersion = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TimedVersion\",\n () => [\n {\n no: 1,\n name: \"unix_micro\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 2,\n name: \"ticks\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n }\n ]\n);\nconst DataStream = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataStream\",\n []\n);\nconst DataStream_OperationType = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.DataStream.OperationType\",\n [\n { no: 0, name: \"CREATE\" },\n { no: 1, name: \"UPDATE\" },\n { no: 2, name: \"DELETE\" },\n { no: 3, name: \"REACTION\" }\n ]\n);\nconst DataStream_TextHeader = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataStream.TextHeader\",\n () => [\n { no: 1, name: \"operation_type\", kind: \"enum\", T: proto3.getEnumType(DataStream_OperationType) },\n {\n no: 2,\n name: \"version\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 3,\n name: \"reply_to_stream_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"attached_stream_ids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 5,\n name: \"generated\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ],\n { localName: \"DataStream_TextHeader\" }\n);\nconst DataStream_FileHeader = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataStream.FileHeader\",\n () => [\n {\n no: 1,\n name: \"file_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ],\n { localName: \"DataStream_FileHeader\" }\n);\nconst DataStream_Header = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataStream.Header\",\n () => [\n {\n no: 1,\n name: \"stream_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"topic\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"mime_type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"total_length\", kind: \"scalar\", T: 4, opt: true },\n { no: 7, name: \"encryption_type\", kind: \"enum\", T: proto3.getEnumType(Encryption_Type) },\n { no: 8, name: \"extensions\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 9, name: \"text_header\", kind: \"message\", T: DataStream_TextHeader, oneof: \"content_header\" },\n { no: 10, name: \"file_header\", kind: \"message\", T: DataStream_FileHeader, oneof: \"content_header\" }\n ],\n { localName: \"DataStream_Header\" }\n);\nconst DataStream_Chunk = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataStream.Chunk\",\n () => [\n {\n no: 1,\n name: \"stream_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"chunk_index\",\n kind: \"scalar\",\n T: 4\n /* ScalarType.UINT64 */\n },\n {\n no: 3,\n name: \"content\",\n kind: \"scalar\",\n T: 12\n /* ScalarType.BYTES */\n },\n {\n no: 4,\n name: \"complete\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 5,\n name: \"version\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n { no: 6, name: \"iv\", kind: \"scalar\", T: 12, opt: true }\n ],\n { localName: \"DataStream_Chunk\" }\n);\n\nconst JobType = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.JobType\",\n [\n { no: 0, name: \"JT_ROOM\" },\n { no: 1, name: \"JT_PUBLISHER\" }\n ]\n);\nconst WorkerStatus = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.WorkerStatus\",\n [\n { no: 0, name: \"WS_AVAILABLE\" },\n { no: 1, name: \"WS_FULL\" }\n ]\n);\nconst JobStatus = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.JobStatus\",\n [\n { no: 0, name: \"JS_PENDING\" },\n { no: 1, name: \"JS_RUNNING\" },\n { no: 2, name: \"JS_SUCCESS\" },\n { no: 3, name: \"JS_FAILED\" }\n ]\n);\nconst Job = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Job\",\n () => [\n {\n no: 1,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"dispatch_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"type\", kind: \"enum\", T: proto3.getEnumType(JobType) },\n { no: 3, name: \"room\", kind: \"message\", T: Room },\n { no: 4, name: \"participant\", kind: \"message\", T: ParticipantInfo, opt: true },\n {\n no: 5,\n name: \"namespace\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"agent_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 8, name: \"state\", kind: \"message\", T: JobState }\n ]\n);\nconst JobState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.JobState\",\n () => [\n { no: 1, name: \"status\", kind: \"enum\", T: proto3.getEnumType(JobStatus) },\n {\n no: 2,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 4,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 5,\n name: \"updated_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 6,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst WorkerMessage = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.WorkerMessage\",\n () => [\n { no: 1, name: \"register\", kind: \"message\", T: RegisterWorkerRequest, oneof: \"message\" },\n { no: 2, name: \"availability\", kind: \"message\", T: AvailabilityResponse, oneof: \"message\" },\n { no: 3, name: \"update_worker\", kind: \"message\", T: UpdateWorkerStatus, oneof: \"message\" },\n { no: 4, name: \"update_job\", kind: \"message\", T: UpdateJobStatus, oneof: \"message\" },\n { no: 5, name: \"ping\", kind: \"message\", T: WorkerPing, oneof: \"message\" },\n { no: 6, name: \"simulate_job\", kind: \"message\", T: SimulateJobRequest, oneof: \"message\" },\n { no: 7, name: \"migrate_job\", kind: \"message\", T: MigrateJobRequest, oneof: \"message\" }\n ]\n);\nconst ServerMessage = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ServerMessage\",\n () => [\n { no: 1, name: \"register\", kind: \"message\", T: RegisterWorkerResponse, oneof: \"message\" },\n { no: 2, name: \"availability\", kind: \"message\", T: AvailabilityRequest, oneof: \"message\" },\n { no: 3, name: \"assignment\", kind: \"message\", T: JobAssignment, oneof: \"message\" },\n { no: 5, name: \"termination\", kind: \"message\", T: JobTermination, oneof: \"message\" },\n { no: 4, name: \"pong\", kind: \"message\", T: WorkerPong, oneof: \"message\" }\n ]\n);\nconst SimulateJobRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SimulateJobRequest\",\n () => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto3.getEnumType(JobType) },\n { no: 2, name: \"room\", kind: \"message\", T: Room },\n { no: 3, name: \"participant\", kind: \"message\", T: ParticipantInfo }\n ]\n);\nconst WorkerPing = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.WorkerPing\",\n () => [\n {\n no: 1,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst WorkerPong = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.WorkerPong\",\n () => [\n {\n no: 1,\n name: \"last_timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 2,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst RegisterWorkerRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RegisterWorkerRequest\",\n () => [\n { no: 1, name: \"type\", kind: \"enum\", T: proto3.getEnumType(JobType) },\n {\n no: 8,\n name: \"agent_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"ping_interval\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 6, name: \"namespace\", kind: \"scalar\", T: 9, opt: true },\n { no: 7, name: \"allowed_permissions\", kind: \"message\", T: ParticipantPermission }\n ]\n);\nconst RegisterWorkerResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RegisterWorkerResponse\",\n () => [\n {\n no: 1,\n name: \"worker_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"server_info\", kind: \"message\", T: ServerInfo }\n ]\n);\nconst MigrateJobRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MigrateJobRequest\",\n () => [\n { no: 2, name: \"job_ids\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst AvailabilityRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AvailabilityRequest\",\n () => [\n { no: 1, name: \"job\", kind: \"message\", T: Job },\n {\n no: 2,\n name: \"resuming\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst AvailabilityResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AvailabilityResponse\",\n () => [\n {\n no: 1,\n name: \"job_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"available\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 3,\n name: \"supports_resume\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 4,\n name: \"participant_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"participant_metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 7, name: \"participant_attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } }\n ]\n);\nconst UpdateJobStatus = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateJobStatus\",\n () => [\n {\n no: 1,\n name: \"job_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"status\", kind: \"enum\", T: proto3.getEnumType(JobStatus) },\n {\n no: 3,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst UpdateWorkerStatus = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateWorkerStatus\",\n () => [\n { no: 1, name: \"status\", kind: \"enum\", T: proto3.getEnumType(WorkerStatus), opt: true },\n {\n no: 3,\n name: \"load\",\n kind: \"scalar\",\n T: 2\n /* ScalarType.FLOAT */\n },\n {\n no: 4,\n name: \"job_count\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst JobAssignment = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.JobAssignment\",\n () => [\n { no: 1, name: \"job\", kind: \"message\", T: Job },\n { no: 2, name: \"url\", kind: \"scalar\", T: 9, opt: true },\n {\n no: 3,\n name: \"token\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst JobTermination = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.JobTermination\",\n () => [\n {\n no: 1,\n name: \"job_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\n\nconst CreateAgentDispatchRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateAgentDispatchRequest\",\n () => [\n {\n no: 1,\n name: \"agent_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst RoomAgentDispatch = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomAgentDispatch\",\n () => [\n {\n no: 1,\n name: \"agent_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst DeleteAgentDispatchRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteAgentDispatchRequest\",\n () => [\n {\n no: 1,\n name: \"dispatch_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ListAgentDispatchRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListAgentDispatchRequest\",\n () => [\n {\n no: 1,\n name: \"dispatch_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ListAgentDispatchResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListAgentDispatchResponse\",\n () => [\n { no: 1, name: \"agent_dispatches\", kind: \"message\", T: AgentDispatch, repeated: true }\n ]\n);\nconst AgentDispatch = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AgentDispatch\",\n () => [\n {\n no: 1,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"agent_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"state\", kind: \"message\", T: AgentDispatchState }\n ]\n);\nconst AgentDispatchState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AgentDispatchState\",\n () => [\n { no: 1, name: \"jobs\", kind: \"message\", T: Job, repeated: true },\n {\n no: 2,\n name: \"created_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"deleted_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\n\nconst EncodedFileType = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.EncodedFileType\",\n [\n { no: 0, name: \"DEFAULT_FILETYPE\" },\n { no: 1, name: \"MP4\" },\n { no: 2, name: \"OGG\" }\n ]\n);\nconst SegmentedFileProtocol = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SegmentedFileProtocol\",\n [\n { no: 0, name: \"DEFAULT_SEGMENTED_FILE_PROTOCOL\" },\n { no: 1, name: \"HLS_PROTOCOL\" }\n ]\n);\nconst SegmentedFileSuffix = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SegmentedFileSuffix\",\n [\n { no: 0, name: \"INDEX\" },\n { no: 1, name: \"TIMESTAMP\" }\n ]\n);\nconst ImageFileSuffix = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.ImageFileSuffix\",\n [\n { no: 0, name: \"IMAGE_SUFFIX_INDEX\" },\n { no: 1, name: \"IMAGE_SUFFIX_TIMESTAMP\" }\n ]\n);\nconst StreamProtocol = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.StreamProtocol\",\n [\n { no: 0, name: \"DEFAULT_PROTOCOL\" },\n { no: 1, name: \"RTMP\" },\n { no: 2, name: \"SRT\" }\n ]\n);\nconst EncodingOptionsPreset = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.EncodingOptionsPreset\",\n [\n { no: 0, name: \"H264_720P_30\" },\n { no: 1, name: \"H264_720P_60\" },\n { no: 2, name: \"H264_1080P_30\" },\n { no: 3, name: \"H264_1080P_60\" },\n { no: 4, name: \"PORTRAIT_H264_720P_30\" },\n { no: 5, name: \"PORTRAIT_H264_720P_60\" },\n { no: 6, name: \"PORTRAIT_H264_1080P_30\" },\n { no: 7, name: \"PORTRAIT_H264_1080P_60\" }\n ]\n);\nconst EgressStatus = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.EgressStatus\",\n [\n { no: 0, name: \"EGRESS_STARTING\" },\n { no: 1, name: \"EGRESS_ACTIVE\" },\n { no: 2, name: \"EGRESS_ENDING\" },\n { no: 3, name: \"EGRESS_COMPLETE\" },\n { no: 4, name: \"EGRESS_FAILED\" },\n { no: 5, name: \"EGRESS_ABORTED\" },\n { no: 6, name: \"EGRESS_LIMIT_REACHED\" }\n ]\n);\nconst EgressSourceType = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.EgressSourceType\",\n [\n { no: 0, name: \"EGRESS_SOURCE_TYPE_WEB\", localName: \"WEB\" },\n { no: 1, name: \"EGRESS_SOURCE_TYPE_SDK\", localName: \"SDK\" }\n ]\n);\nconst RoomCompositeEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomCompositeEgressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"layout\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"audio_only\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 4,\n name: \"video_only\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 5,\n name: \"custom_base_url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 6, name: \"file\", kind: \"message\", T: EncodedFileOutput, oneof: \"output\" },\n { no: 7, name: \"stream\", kind: \"message\", T: StreamOutput, oneof: \"output\" },\n { no: 10, name: \"segments\", kind: \"message\", T: SegmentedFileOutput, oneof: \"output\" },\n { no: 8, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(EncodingOptionsPreset), oneof: \"options\" },\n { no: 9, name: \"advanced\", kind: \"message\", T: EncodingOptions, oneof: \"options\" },\n { no: 11, name: \"file_outputs\", kind: \"message\", T: EncodedFileOutput, repeated: true },\n { no: 12, name: \"stream_outputs\", kind: \"message\", T: StreamOutput, repeated: true },\n { no: 13, name: \"segment_outputs\", kind: \"message\", T: SegmentedFileOutput, repeated: true },\n { no: 14, name: \"image_outputs\", kind: \"message\", T: ImageOutput, repeated: true }\n ]\n);\nconst WebEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.WebEgressRequest\",\n () => [\n {\n no: 1,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"audio_only\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 3,\n name: \"video_only\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 12,\n name: \"await_start_signal\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 4, name: \"file\", kind: \"message\", T: EncodedFileOutput, oneof: \"output\" },\n { no: 5, name: \"stream\", kind: \"message\", T: StreamOutput, oneof: \"output\" },\n { no: 6, name: \"segments\", kind: \"message\", T: SegmentedFileOutput, oneof: \"output\" },\n { no: 7, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(EncodingOptionsPreset), oneof: \"options\" },\n { no: 8, name: \"advanced\", kind: \"message\", T: EncodingOptions, oneof: \"options\" },\n { no: 9, name: \"file_outputs\", kind: \"message\", T: EncodedFileOutput, repeated: true },\n { no: 10, name: \"stream_outputs\", kind: \"message\", T: StreamOutput, repeated: true },\n { no: 11, name: \"segment_outputs\", kind: \"message\", T: SegmentedFileOutput, repeated: true },\n { no: 13, name: \"image_outputs\", kind: \"message\", T: ImageOutput, repeated: true }\n ]\n);\nconst ParticipantEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ParticipantEgressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"screen_share\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 4, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(EncodingOptionsPreset), oneof: \"options\" },\n { no: 5, name: \"advanced\", kind: \"message\", T: EncodingOptions, oneof: \"options\" },\n { no: 6, name: \"file_outputs\", kind: \"message\", T: EncodedFileOutput, repeated: true },\n { no: 7, name: \"stream_outputs\", kind: \"message\", T: StreamOutput, repeated: true },\n { no: 8, name: \"segment_outputs\", kind: \"message\", T: SegmentedFileOutput, repeated: true },\n { no: 9, name: \"image_outputs\", kind: \"message\", T: ImageOutput, repeated: true }\n ]\n);\nconst TrackCompositeEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackCompositeEgressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"audio_track_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"video_track_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"file\", kind: \"message\", T: EncodedFileOutput, oneof: \"output\" },\n { no: 5, name: \"stream\", kind: \"message\", T: StreamOutput, oneof: \"output\" },\n { no: 8, name: \"segments\", kind: \"message\", T: SegmentedFileOutput, oneof: \"output\" },\n { no: 6, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(EncodingOptionsPreset), oneof: \"options\" },\n { no: 7, name: \"advanced\", kind: \"message\", T: EncodingOptions, oneof: \"options\" },\n { no: 11, name: \"file_outputs\", kind: \"message\", T: EncodedFileOutput, repeated: true },\n { no: 12, name: \"stream_outputs\", kind: \"message\", T: StreamOutput, repeated: true },\n { no: 13, name: \"segment_outputs\", kind: \"message\", T: SegmentedFileOutput, repeated: true },\n { no: 14, name: \"image_outputs\", kind: \"message\", T: ImageOutput, repeated: true }\n ]\n);\nconst TrackEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackEgressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"track_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"file\", kind: \"message\", T: DirectFileOutput, oneof: \"output\" },\n { no: 4, name: \"websocket_url\", kind: \"scalar\", T: 9, oneof: \"output\" }\n ]\n);\nconst EncodedFileOutput = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.EncodedFileOutput\",\n () => [\n { no: 1, name: \"file_type\", kind: \"enum\", T: proto3.getEnumType(EncodedFileType) },\n {\n no: 2,\n name: \"filepath\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"disable_manifest\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 3, name: \"s3\", kind: \"message\", T: S3Upload, oneof: \"output\" },\n { no: 4, name: \"gcp\", kind: \"message\", T: GCPUpload, oneof: \"output\" },\n { no: 5, name: \"azure\", kind: \"message\", T: AzureBlobUpload, oneof: \"output\" },\n { no: 7, name: \"aliOSS\", kind: \"message\", T: AliOSSUpload, oneof: \"output\" }\n ]\n);\nconst SegmentedFileOutput = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SegmentedFileOutput\",\n () => [\n { no: 1, name: \"protocol\", kind: \"enum\", T: proto3.getEnumType(SegmentedFileProtocol) },\n {\n no: 2,\n name: \"filename_prefix\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"playlist_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"live_playlist_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"segment_duration\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 10, name: \"filename_suffix\", kind: \"enum\", T: proto3.getEnumType(SegmentedFileSuffix) },\n {\n no: 8,\n name: \"disable_manifest\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 5, name: \"s3\", kind: \"message\", T: S3Upload, oneof: \"output\" },\n { no: 6, name: \"gcp\", kind: \"message\", T: GCPUpload, oneof: \"output\" },\n { no: 7, name: \"azure\", kind: \"message\", T: AzureBlobUpload, oneof: \"output\" },\n { no: 9, name: \"aliOSS\", kind: \"message\", T: AliOSSUpload, oneof: \"output\" }\n ]\n);\nconst DirectFileOutput = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DirectFileOutput\",\n () => [\n {\n no: 1,\n name: \"filepath\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"disable_manifest\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 2, name: \"s3\", kind: \"message\", T: S3Upload, oneof: \"output\" },\n { no: 3, name: \"gcp\", kind: \"message\", T: GCPUpload, oneof: \"output\" },\n { no: 4, name: \"azure\", kind: \"message\", T: AzureBlobUpload, oneof: \"output\" },\n { no: 6, name: \"aliOSS\", kind: \"message\", T: AliOSSUpload, oneof: \"output\" }\n ]\n);\nconst ImageOutput = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ImageOutput\",\n () => [\n {\n no: 1,\n name: \"capture_interval\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 2,\n name: \"width\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 3,\n name: \"height\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 4,\n name: \"filename_prefix\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"filename_suffix\", kind: \"enum\", T: proto3.getEnumType(ImageFileSuffix) },\n { no: 6, name: \"image_codec\", kind: \"enum\", T: proto3.getEnumType(ImageCodec) },\n {\n no: 7,\n name: \"disable_manifest\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 8, name: \"s3\", kind: \"message\", T: S3Upload, oneof: \"output\" },\n { no: 9, name: \"gcp\", kind: \"message\", T: GCPUpload, oneof: \"output\" },\n { no: 10, name: \"azure\", kind: \"message\", T: AzureBlobUpload, oneof: \"output\" },\n { no: 11, name: \"aliOSS\", kind: \"message\", T: AliOSSUpload, oneof: \"output\" }\n ]\n);\nconst S3Upload = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.S3Upload\",\n () => [\n {\n no: 1,\n name: \"access_key\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"secret\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"session_token\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"endpoint\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"bucket\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"force_path_style\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 7, name: \"metadata\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n {\n no: 8,\n name: \"tagging\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"content_disposition\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 10, name: \"proxy\", kind: \"message\", T: ProxyConfig }\n ]\n);\nconst GCPUpload = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.GCPUpload\",\n () => [\n {\n no: 1,\n name: \"credentials\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"bucket\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"proxy\", kind: \"message\", T: ProxyConfig }\n ]\n);\nconst AzureBlobUpload = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AzureBlobUpload\",\n () => [\n {\n no: 1,\n name: \"account_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"account_key\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"container_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst AliOSSUpload = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AliOSSUpload\",\n () => [\n {\n no: 1,\n name: \"access_key\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"secret\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"endpoint\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"bucket\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ProxyConfig = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ProxyConfig\",\n () => [\n {\n no: 1,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst StreamOutput = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StreamOutput\",\n () => [\n { no: 1, name: \"protocol\", kind: \"enum\", T: proto3.getEnumType(StreamProtocol) },\n { no: 2, name: \"urls\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst EncodingOptions = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.EncodingOptions\",\n () => [\n {\n no: 1,\n name: \"width\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 2,\n name: \"height\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 3,\n name: \"depth\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 4,\n name: \"framerate\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n { no: 5, name: \"audio_codec\", kind: \"enum\", T: proto3.getEnumType(AudioCodec) },\n {\n no: 6,\n name: \"audio_bitrate\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 11,\n name: \"audio_quality\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 7,\n name: \"audio_frequency\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n { no: 8, name: \"video_codec\", kind: \"enum\", T: proto3.getEnumType(VideoCodec) },\n {\n no: 9,\n name: \"video_bitrate\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 12,\n name: \"video_quality\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 10,\n name: \"key_frame_interval\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n }\n ]\n);\nconst UpdateLayoutRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateLayoutRequest\",\n () => [\n {\n no: 1,\n name: \"egress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"layout\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst UpdateStreamRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateStreamRequest\",\n () => [\n {\n no: 1,\n name: \"egress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"add_output_urls\", kind: \"scalar\", T: 9, repeated: true },\n { no: 3, name: \"remove_output_urls\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ListEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListEgressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"egress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"active\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst ListEgressResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListEgressResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: EgressInfo, repeated: true }\n ]\n);\nconst StopEgressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StopEgressRequest\",\n () => [\n {\n no: 1,\n name: \"egress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst EgressInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.EgressInfo\",\n () => [\n {\n no: 1,\n name: \"egress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"room_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 13,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 26, name: \"source_type\", kind: \"enum\", T: proto3.getEnumType(EgressSourceType) },\n { no: 3, name: \"status\", kind: \"enum\", T: proto3.getEnumType(EgressStatus) },\n {\n no: 10,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 11,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 18,\n name: \"updated_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 21,\n name: \"details\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 22,\n name: \"error_code\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n { no: 4, name: \"room_composite\", kind: \"message\", T: RoomCompositeEgressRequest, oneof: \"request\" },\n { no: 14, name: \"web\", kind: \"message\", T: WebEgressRequest, oneof: \"request\" },\n { no: 19, name: \"participant\", kind: \"message\", T: ParticipantEgressRequest, oneof: \"request\" },\n { no: 5, name: \"track_composite\", kind: \"message\", T: TrackCompositeEgressRequest, oneof: \"request\" },\n { no: 6, name: \"track\", kind: \"message\", T: TrackEgressRequest, oneof: \"request\" },\n { no: 7, name: \"stream\", kind: \"message\", T: StreamInfoList, oneof: \"result\" },\n { no: 8, name: \"file\", kind: \"message\", T: FileInfo, oneof: \"result\" },\n { no: 12, name: \"segments\", kind: \"message\", T: SegmentsInfo, oneof: \"result\" },\n { no: 15, name: \"stream_results\", kind: \"message\", T: StreamInfo, repeated: true },\n { no: 16, name: \"file_results\", kind: \"message\", T: FileInfo, repeated: true },\n { no: 17, name: \"segment_results\", kind: \"message\", T: SegmentsInfo, repeated: true },\n { no: 20, name: \"image_results\", kind: \"message\", T: ImagesInfo, repeated: true },\n {\n no: 23,\n name: \"manifest_location\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 25,\n name: \"backup_storage_used\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst StreamInfoList = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StreamInfoList\",\n () => [\n { no: 1, name: \"info\", kind: \"message\", T: StreamInfo, repeated: true }\n ]\n);\nconst StreamInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StreamInfo\",\n () => [\n {\n no: 1,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 4,\n name: \"duration\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 5, name: \"status\", kind: \"enum\", T: proto3.getEnumType(StreamInfo_Status) },\n {\n no: 6,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst StreamInfo_Status = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.StreamInfo.Status\",\n [\n { no: 0, name: \"ACTIVE\" },\n { no: 1, name: \"FINISHED\" },\n { no: 2, name: \"FAILED\" }\n ]\n);\nconst FileInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.FileInfo\",\n () => [\n {\n no: 1,\n name: \"filename\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 6,\n name: \"duration\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 4,\n name: \"size\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 5,\n name: \"location\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SegmentsInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SegmentsInfo\",\n () => [\n {\n no: 1,\n name: \"playlist_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"live_playlist_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"duration\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"size\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 4,\n name: \"playlist_location\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"live_playlist_location\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"segment_count\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 6,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 7,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst ImagesInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ImagesInfo\",\n () => [\n {\n no: 4,\n name: \"filename_prefix\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 1,\n name: \"image_count\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 2,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 3,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst AutoParticipantEgress = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AutoParticipantEgress\",\n () => [\n { no: 1, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(EncodingOptionsPreset), oneof: \"options\" },\n { no: 2, name: \"advanced\", kind: \"message\", T: EncodingOptions, oneof: \"options\" },\n { no: 3, name: \"file_outputs\", kind: \"message\", T: EncodedFileOutput, repeated: true },\n { no: 4, name: \"segment_outputs\", kind: \"message\", T: SegmentedFileOutput, repeated: true }\n ]\n);\nconst AutoTrackEgress = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AutoTrackEgress\",\n () => [\n {\n no: 1,\n name: \"filepath\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"disable_manifest\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 2, name: \"s3\", kind: \"message\", T: S3Upload, oneof: \"output\" },\n { no: 3, name: \"gcp\", kind: \"message\", T: GCPUpload, oneof: \"output\" },\n { no: 4, name: \"azure\", kind: \"message\", T: AzureBlobUpload, oneof: \"output\" },\n { no: 6, name: \"aliOSS\", kind: \"message\", T: AliOSSUpload, oneof: \"output\" }\n ]\n);\n\nconst IngressInput = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.IngressInput\",\n [\n { no: 0, name: \"RTMP_INPUT\" },\n { no: 1, name: \"WHIP_INPUT\" },\n { no: 2, name: \"URL_INPUT\" }\n ]\n);\nconst IngressAudioEncodingPreset = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.IngressAudioEncodingPreset\",\n [\n { no: 0, name: \"OPUS_STEREO_96KBPS\" },\n { no: 1, name: \"OPUS_MONO_64KBS\" }\n ]\n);\nconst IngressVideoEncodingPreset = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.IngressVideoEncodingPreset\",\n [\n { no: 0, name: \"H264_720P_30FPS_3_LAYERS\" },\n { no: 1, name: \"H264_1080P_30FPS_3_LAYERS\" },\n { no: 2, name: \"H264_540P_25FPS_2_LAYERS\" },\n { no: 3, name: \"H264_720P_30FPS_1_LAYER\" },\n { no: 4, name: \"H264_1080P_30FPS_1_LAYER\" },\n { no: 5, name: \"H264_720P_30FPS_3_LAYERS_HIGH_MOTION\" },\n { no: 6, name: \"H264_1080P_30FPS_3_LAYERS_HIGH_MOTION\" },\n { no: 7, name: \"H264_540P_25FPS_2_LAYERS_HIGH_MOTION\" },\n { no: 8, name: \"H264_720P_30FPS_1_LAYER_HIGH_MOTION\" },\n { no: 9, name: \"H264_1080P_30FPS_1_LAYER_HIGH_MOTION\" }\n ]\n);\nconst CreateIngressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateIngressRequest\",\n () => [\n { no: 1, name: \"input_type\", kind: \"enum\", T: proto3.getEnumType(IngressInput) },\n {\n no: 9,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"participant_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"participant_metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"bypass_transcoding\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 11, name: \"enable_transcoding\", kind: \"scalar\", T: 8, opt: true },\n { no: 6, name: \"audio\", kind: \"message\", T: IngressAudioOptions },\n { no: 7, name: \"video\", kind: \"message\", T: IngressVideoOptions }\n ]\n);\nconst IngressAudioOptions = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressAudioOptions\",\n () => [\n {\n no: 1,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"source\", kind: \"enum\", T: proto3.getEnumType(TrackSource) },\n { no: 3, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(IngressAudioEncodingPreset), oneof: \"encoding_options\" },\n { no: 4, name: \"options\", kind: \"message\", T: IngressAudioEncodingOptions, oneof: \"encoding_options\" }\n ]\n);\nconst IngressVideoOptions = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressVideoOptions\",\n () => [\n {\n no: 1,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"source\", kind: \"enum\", T: proto3.getEnumType(TrackSource) },\n { no: 3, name: \"preset\", kind: \"enum\", T: proto3.getEnumType(IngressVideoEncodingPreset), oneof: \"encoding_options\" },\n { no: 4, name: \"options\", kind: \"message\", T: IngressVideoEncodingOptions, oneof: \"encoding_options\" }\n ]\n);\nconst IngressAudioEncodingOptions = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressAudioEncodingOptions\",\n () => [\n { no: 1, name: \"audio_codec\", kind: \"enum\", T: proto3.getEnumType(AudioCodec) },\n {\n no: 2,\n name: \"bitrate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"disable_dtx\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 4,\n name: \"channels\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst IngressVideoEncodingOptions = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressVideoEncodingOptions\",\n () => [\n { no: 1, name: \"video_codec\", kind: \"enum\", T: proto3.getEnumType(VideoCodec) },\n {\n no: 2,\n name: \"frame_rate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n },\n { no: 3, name: \"layers\", kind: \"message\", T: VideoLayer, repeated: true }\n ]\n);\nconst IngressInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressInfo\",\n () => [\n {\n no: 1,\n name: \"ingress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"stream_key\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"input_type\", kind: \"enum\", T: proto3.getEnumType(IngressInput) },\n {\n no: 13,\n name: \"bypass_transcoding\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 15, name: \"enable_transcoding\", kind: \"scalar\", T: 8, opt: true },\n { no: 6, name: \"audio\", kind: \"message\", T: IngressAudioOptions },\n { no: 7, name: \"video\", kind: \"message\", T: IngressVideoOptions },\n {\n no: 8,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"participant_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 14,\n name: \"participant_metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"reusable\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 12, name: \"state\", kind: \"message\", T: IngressState }\n ]\n);\nconst IngressState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.IngressState\",\n () => [\n { no: 1, name: \"status\", kind: \"enum\", T: proto3.getEnumType(IngressState_Status) },\n {\n no: 2,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"video\", kind: \"message\", T: InputVideoState },\n { no: 4, name: \"audio\", kind: \"message\", T: InputAudioState },\n {\n no: 5,\n name: \"room_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 8,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 10,\n name: \"updated_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 9,\n name: \"resource_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 6, name: \"tracks\", kind: \"message\", T: TrackInfo, repeated: true }\n ]\n);\nconst IngressState_Status = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.IngressState.Status\",\n [\n { no: 0, name: \"ENDPOINT_INACTIVE\" },\n { no: 1, name: \"ENDPOINT_BUFFERING\" },\n { no: 2, name: \"ENDPOINT_PUBLISHING\" },\n { no: 3, name: \"ENDPOINT_ERROR\" },\n { no: 4, name: \"ENDPOINT_COMPLETE\" }\n ]\n);\nconst InputVideoState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.InputVideoState\",\n () => [\n {\n no: 1,\n name: \"mime_type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"average_bitrate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"framerate\",\n kind: \"scalar\",\n T: 1\n /* ScalarType.DOUBLE */\n }\n ]\n);\nconst InputAudioState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.InputAudioState\",\n () => [\n {\n no: 1,\n name: \"mime_type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"average_bitrate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"channels\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"sample_rate\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst UpdateIngressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateIngressRequest\",\n () => [\n {\n no: 1,\n name: \"ingress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"participant_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"participant_metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 8, name: \"bypass_transcoding\", kind: \"scalar\", T: 8, opt: true },\n { no: 10, name: \"enable_transcoding\", kind: \"scalar\", T: 8, opt: true },\n { no: 6, name: \"audio\", kind: \"message\", T: IngressAudioOptions },\n { no: 7, name: \"video\", kind: \"message\", T: IngressVideoOptions }\n ]\n);\nconst ListIngressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListIngressRequest\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"ingress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ListIngressResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListIngressResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: IngressInfo, repeated: true }\n ]\n);\nconst DeleteIngressRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteIngressRequest\",\n () => [\n {\n no: 1,\n name: \"ingress_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\n\nconst CreateRoomRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateRoomRequest\",\n () => [\n {\n no: 1,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 12,\n name: \"room_preset\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"empty_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 10,\n name: \"departure_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"max_participants\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"node_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 6, name: \"egress\", kind: \"message\", T: RoomEgress },\n {\n no: 7,\n name: \"min_playout_delay\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 8,\n name: \"max_playout_delay\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 9,\n name: \"sync_streams\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 13,\n name: \"replay_enabled\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 14, name: \"agents\", kind: \"message\", T: RoomAgentDispatch, repeated: true }\n ]\n);\nconst RoomEgress = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomEgress\",\n () => [\n { no: 1, name: \"room\", kind: \"message\", T: RoomCompositeEgressRequest },\n { no: 3, name: \"participant\", kind: \"message\", T: AutoParticipantEgress },\n { no: 2, name: \"tracks\", kind: \"message\", T: AutoTrackEgress }\n ]\n);\nconst RoomAgent = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomAgent\",\n () => [\n { no: 1, name: \"dispatches\", kind: \"message\", T: RoomAgentDispatch, repeated: true }\n ]\n);\nconst ListRoomsRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListRoomsRequest\",\n () => [\n { no: 1, name: \"names\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ListRoomsResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListRoomsResponse\",\n () => [\n { no: 1, name: \"rooms\", kind: \"message\", T: Room, repeated: true }\n ]\n);\nconst DeleteRoomRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteRoomRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst DeleteRoomResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteRoomResponse\",\n []\n);\nconst ListParticipantsRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListParticipantsRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ListParticipantsResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListParticipantsResponse\",\n () => [\n { no: 1, name: \"participants\", kind: \"message\", T: ParticipantInfo, repeated: true }\n ]\n);\nconst RoomParticipantIdentity = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomParticipantIdentity\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst RemoveParticipantResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RemoveParticipantResponse\",\n []\n);\nconst MuteRoomTrackRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MuteRoomTrackRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"muted\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst MuteRoomTrackResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MuteRoomTrackResponse\",\n () => [\n { no: 1, name: \"track\", kind: \"message\", T: TrackInfo }\n ]\n);\nconst UpdateParticipantRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateParticipantRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"permission\", kind: \"message\", T: ParticipantPermission },\n {\n no: 5,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 6, name: \"attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } }\n ]\n);\nconst UpdateSubscriptionsRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateSubscriptionsRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"track_sids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 4,\n name: \"subscribe\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 5, name: \"participant_tracks\", kind: \"message\", T: ParticipantTracks, repeated: true }\n ]\n);\nconst UpdateSubscriptionsResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateSubscriptionsResponse\",\n []\n);\nconst SendDataRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SendDataRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"data\",\n kind: \"scalar\",\n T: 12\n /* ScalarType.BYTES */\n },\n { no: 3, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(DataPacket_Kind) },\n { no: 4, name: \"destination_sids\", kind: \"scalar\", T: 9, repeated: true },\n { no: 6, name: \"destination_identities\", kind: \"scalar\", T: 9, repeated: true },\n { no: 5, name: \"topic\", kind: \"scalar\", T: 9, opt: true }\n ]\n);\nconst SendDataResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SendDataResponse\",\n []\n);\nconst UpdateRoomMetadataRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateRoomMetadataRequest\",\n () => [\n {\n no: 1,\n name: \"room\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst RoomConfiguration = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomConfiguration\",\n () => [\n {\n no: 1,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"empty_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"departure_timeout\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 4,\n name: \"max_participants\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 5, name: \"egress\", kind: \"message\", T: RoomEgress },\n {\n no: 7,\n name: \"min_playout_delay\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 8,\n name: \"max_playout_delay\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 9,\n name: \"sync_streams\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 10, name: \"agents\", kind: \"message\", T: RoomAgentDispatch, repeated: true }\n ]\n);\n\nconst SignalTarget = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SignalTarget\",\n [\n { no: 0, name: \"PUBLISHER\" },\n { no: 1, name: \"SUBSCRIBER\" }\n ]\n);\nconst StreamState = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.StreamState\",\n [\n { no: 0, name: \"ACTIVE\" },\n { no: 1, name: \"PAUSED\" }\n ]\n);\nconst CandidateProtocol = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.CandidateProtocol\",\n [\n { no: 0, name: \"UDP\" },\n { no: 1, name: \"TCP\" },\n { no: 2, name: \"TLS\" }\n ]\n);\nconst SignalRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SignalRequest\",\n () => [\n { no: 1, name: \"offer\", kind: \"message\", T: SessionDescription, oneof: \"message\" },\n { no: 2, name: \"answer\", kind: \"message\", T: SessionDescription, oneof: \"message\" },\n { no: 3, name: \"trickle\", kind: \"message\", T: TrickleRequest, oneof: \"message\" },\n { no: 4, name: \"add_track\", kind: \"message\", T: AddTrackRequest, oneof: \"message\" },\n { no: 5, name: \"mute\", kind: \"message\", T: MuteTrackRequest, oneof: \"message\" },\n { no: 6, name: \"subscription\", kind: \"message\", T: UpdateSubscription, oneof: \"message\" },\n { no: 7, name: \"track_setting\", kind: \"message\", T: UpdateTrackSettings, oneof: \"message\" },\n { no: 8, name: \"leave\", kind: \"message\", T: LeaveRequest, oneof: \"message\" },\n { no: 10, name: \"update_layers\", kind: \"message\", T: UpdateVideoLayers, oneof: \"message\" },\n { no: 11, name: \"subscription_permission\", kind: \"message\", T: SubscriptionPermission, oneof: \"message\" },\n { no: 12, name: \"sync_state\", kind: \"message\", T: SyncState, oneof: \"message\" },\n { no: 13, name: \"simulate\", kind: \"message\", T: SimulateScenario, oneof: \"message\" },\n { no: 14, name: \"ping\", kind: \"scalar\", T: 3, oneof: \"message\" },\n { no: 15, name: \"update_metadata\", kind: \"message\", T: UpdateParticipantMetadata, oneof: \"message\" },\n { no: 16, name: \"ping_req\", kind: \"message\", T: Ping, oneof: \"message\" },\n { no: 17, name: \"update_audio_track\", kind: \"message\", T: UpdateLocalAudioTrack, oneof: \"message\" },\n { no: 18, name: \"update_video_track\", kind: \"message\", T: UpdateLocalVideoTrack, oneof: \"message\" }\n ]\n);\nconst SignalResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SignalResponse\",\n () => [\n { no: 1, name: \"join\", kind: \"message\", T: JoinResponse, oneof: \"message\" },\n { no: 2, name: \"answer\", kind: \"message\", T: SessionDescription, oneof: \"message\" },\n { no: 3, name: \"offer\", kind: \"message\", T: SessionDescription, oneof: \"message\" },\n { no: 4, name: \"trickle\", kind: \"message\", T: TrickleRequest, oneof: \"message\" },\n { no: 5, name: \"update\", kind: \"message\", T: ParticipantUpdate, oneof: \"message\" },\n { no: 6, name: \"track_published\", kind: \"message\", T: TrackPublishedResponse, oneof: \"message\" },\n { no: 8, name: \"leave\", kind: \"message\", T: LeaveRequest, oneof: \"message\" },\n { no: 9, name: \"mute\", kind: \"message\", T: MuteTrackRequest, oneof: \"message\" },\n { no: 10, name: \"speakers_changed\", kind: \"message\", T: SpeakersChanged, oneof: \"message\" },\n { no: 11, name: \"room_update\", kind: \"message\", T: RoomUpdate, oneof: \"message\" },\n { no: 12, name: \"connection_quality\", kind: \"message\", T: ConnectionQualityUpdate, oneof: \"message\" },\n { no: 13, name: \"stream_state_update\", kind: \"message\", T: StreamStateUpdate, oneof: \"message\" },\n { no: 14, name: \"subscribed_quality_update\", kind: \"message\", T: SubscribedQualityUpdate, oneof: \"message\" },\n { no: 15, name: \"subscription_permission_update\", kind: \"message\", T: SubscriptionPermissionUpdate, oneof: \"message\" },\n { no: 16, name: \"refresh_token\", kind: \"scalar\", T: 9, oneof: \"message\" },\n { no: 17, name: \"track_unpublished\", kind: \"message\", T: TrackUnpublishedResponse, oneof: \"message\" },\n { no: 18, name: \"pong\", kind: \"scalar\", T: 3, oneof: \"message\" },\n { no: 19, name: \"reconnect\", kind: \"message\", T: ReconnectResponse, oneof: \"message\" },\n { no: 20, name: \"pong_resp\", kind: \"message\", T: Pong, oneof: \"message\" },\n { no: 21, name: \"subscription_response\", kind: \"message\", T: SubscriptionResponse, oneof: \"message\" },\n { no: 22, name: \"request_response\", kind: \"message\", T: RequestResponse, oneof: \"message\" },\n { no: 23, name: \"track_subscribed\", kind: \"message\", T: TrackSubscribed, oneof: \"message\" }\n ]\n);\nconst SimulcastCodec = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SimulcastCodec\",\n () => [\n {\n no: 1,\n name: \"codec\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"cid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst AddTrackRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.AddTrackRequest\",\n () => [\n {\n no: 1,\n name: \"cid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"type\", kind: \"enum\", T: proto3.getEnumType(TrackType) },\n {\n no: 4,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 5,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 6,\n name: \"muted\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 7,\n name: \"disable_dtx\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 8, name: \"source\", kind: \"enum\", T: proto3.getEnumType(TrackSource) },\n { no: 9, name: \"layers\", kind: \"message\", T: VideoLayer, repeated: true },\n { no: 10, name: \"simulcast_codecs\", kind: \"message\", T: SimulcastCodec, repeated: true },\n {\n no: 11,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 12,\n name: \"stereo\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 13,\n name: \"disable_red\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 14, name: \"encryption\", kind: \"enum\", T: proto3.getEnumType(Encryption_Type) },\n {\n no: 15,\n name: \"stream\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst TrickleRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrickleRequest\",\n () => [\n {\n no: 1,\n name: \"candidateInit\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"target\", kind: \"enum\", T: proto3.getEnumType(SignalTarget) },\n {\n no: 3,\n name: \"final\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst MuteTrackRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.MuteTrackRequest\",\n () => [\n {\n no: 1,\n name: \"sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"muted\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst JoinResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.JoinResponse\",\n () => [\n { no: 1, name: \"room\", kind: \"message\", T: Room },\n { no: 2, name: \"participant\", kind: \"message\", T: ParticipantInfo },\n { no: 3, name: \"other_participants\", kind: \"message\", T: ParticipantInfo, repeated: true },\n {\n no: 4,\n name: \"server_version\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"ice_servers\", kind: \"message\", T: ICEServer, repeated: true },\n {\n no: 6,\n name: \"subscriber_primary\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 7,\n name: \"alternative_url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 8, name: \"client_configuration\", kind: \"message\", T: ClientConfiguration },\n {\n no: 9,\n name: \"server_region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"ping_timeout\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n {\n no: 11,\n name: \"ping_interval\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n },\n { no: 12, name: \"server_info\", kind: \"message\", T: ServerInfo },\n {\n no: 13,\n name: \"sif_trailer\",\n kind: \"scalar\",\n T: 12\n /* ScalarType.BYTES */\n },\n { no: 14, name: \"enabled_publish_codecs\", kind: \"message\", T: Codec, repeated: true },\n {\n no: 15,\n name: \"fast_publish\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst ReconnectResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ReconnectResponse\",\n () => [\n { no: 1, name: \"ice_servers\", kind: \"message\", T: ICEServer, repeated: true },\n { no: 2, name: \"client_configuration\", kind: \"message\", T: ClientConfiguration }\n ]\n);\nconst TrackPublishedResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackPublishedResponse\",\n () => [\n {\n no: 1,\n name: \"cid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"track\", kind: \"message\", T: TrackInfo }\n ]\n);\nconst TrackUnpublishedResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackUnpublishedResponse\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SessionDescription = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SessionDescription\",\n () => [\n {\n no: 1,\n name: \"type\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"sdp\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst ParticipantUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ParticipantUpdate\",\n () => [\n { no: 1, name: \"participants\", kind: \"message\", T: ParticipantInfo, repeated: true }\n ]\n);\nconst UpdateSubscription = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateSubscription\",\n () => [\n { no: 1, name: \"track_sids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 2,\n name: \"subscribe\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 3, name: \"participant_tracks\", kind: \"message\", T: ParticipantTracks, repeated: true }\n ]\n);\nconst UpdateTrackSettings = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateTrackSettings\",\n () => [\n { no: 1, name: \"track_sids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 3,\n name: \"disabled\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 4, name: \"quality\", kind: \"enum\", T: proto3.getEnumType(VideoQuality) },\n {\n no: 5,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 6,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 7,\n name: \"fps\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 8,\n name: \"priority\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst UpdateLocalAudioTrack = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateLocalAudioTrack\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"features\", kind: \"enum\", T: proto3.getEnumType(AudioTrackFeature), repeated: true }\n ]\n);\nconst UpdateLocalVideoTrack = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateLocalVideoTrack\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"width\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n {\n no: 3,\n name: \"height\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst LeaveRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.LeaveRequest\",\n () => [\n {\n no: 1,\n name: \"can_reconnect\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 2, name: \"reason\", kind: \"enum\", T: proto3.getEnumType(DisconnectReason) },\n { no: 3, name: \"action\", kind: \"enum\", T: proto3.getEnumType(LeaveRequest_Action) },\n { no: 4, name: \"regions\", kind: \"message\", T: RegionSettings }\n ]\n);\nconst LeaveRequest_Action = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.LeaveRequest.Action\",\n [\n { no: 0, name: \"DISCONNECT\" },\n { no: 1, name: \"RESUME\" },\n { no: 2, name: \"RECONNECT\" }\n ]\n);\nconst UpdateVideoLayers = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateVideoLayers\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"layers\", kind: \"message\", T: VideoLayer, repeated: true }\n ]\n);\nconst UpdateParticipantMetadata = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.UpdateParticipantMetadata\",\n () => [\n {\n no: 1,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n {\n no: 4,\n name: \"request_id\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n }\n ]\n);\nconst ICEServer = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ICEServer\",\n () => [\n { no: 1, name: \"urls\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 2,\n name: \"username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"credential\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SpeakersChanged = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SpeakersChanged\",\n () => [\n { no: 1, name: \"speakers\", kind: \"message\", T: SpeakerInfo, repeated: true }\n ]\n);\nconst RoomUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RoomUpdate\",\n () => [\n { no: 1, name: \"room\", kind: \"message\", T: Room }\n ]\n);\nconst ConnectionQualityInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ConnectionQualityInfo\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"quality\", kind: \"enum\", T: proto3.getEnumType(ConnectionQuality) },\n {\n no: 3,\n name: \"score\",\n kind: \"scalar\",\n T: 2\n /* ScalarType.FLOAT */\n }\n ]\n);\nconst ConnectionQualityUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ConnectionQualityUpdate\",\n () => [\n { no: 1, name: \"updates\", kind: \"message\", T: ConnectionQualityInfo, repeated: true }\n ]\n);\nconst StreamStateInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StreamStateInfo\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 3, name: \"state\", kind: \"enum\", T: proto3.getEnumType(StreamState) }\n ]\n);\nconst StreamStateUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.StreamStateUpdate\",\n () => [\n { no: 1, name: \"stream_states\", kind: \"message\", T: StreamStateInfo, repeated: true }\n ]\n);\nconst SubscribedQuality = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscribedQuality\",\n () => [\n { no: 1, name: \"quality\", kind: \"enum\", T: proto3.getEnumType(VideoQuality) },\n {\n no: 2,\n name: \"enabled\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst SubscribedCodec = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscribedCodec\",\n () => [\n {\n no: 1,\n name: \"codec\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"qualities\", kind: \"message\", T: SubscribedQuality, repeated: true }\n ]\n);\nconst SubscribedQualityUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscribedQualityUpdate\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"subscribed_qualities\", kind: \"message\", T: SubscribedQuality, repeated: true },\n { no: 3, name: \"subscribed_codecs\", kind: \"message\", T: SubscribedCodec, repeated: true }\n ]\n);\nconst TrackPermission = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackPermission\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"all_tracks\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 3, name: \"track_sids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 4,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SubscriptionPermission = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscriptionPermission\",\n () => [\n {\n no: 1,\n name: \"all_participants\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 2, name: \"track_permissions\", kind: \"message\", T: TrackPermission, repeated: true }\n ]\n);\nconst SubscriptionPermissionUpdate = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscriptionPermissionUpdate\",\n () => [\n {\n no: 1,\n name: \"participant_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"allowed\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst SyncState = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SyncState\",\n () => [\n { no: 1, name: \"answer\", kind: \"message\", T: SessionDescription },\n { no: 2, name: \"subscription\", kind: \"message\", T: UpdateSubscription },\n { no: 3, name: \"publish_tracks\", kind: \"message\", T: TrackPublishedResponse, repeated: true },\n { no: 4, name: \"data_channels\", kind: \"message\", T: DataChannelInfo, repeated: true },\n { no: 5, name: \"offer\", kind: \"message\", T: SessionDescription },\n { no: 6, name: \"track_sids_disabled\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst DataChannelInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DataChannelInfo\",\n () => [\n {\n no: 1,\n name: \"label\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"id\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 3, name: \"target\", kind: \"enum\", T: proto3.getEnumType(SignalTarget) }\n ]\n);\nconst SimulateScenario = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SimulateScenario\",\n () => [\n { no: 1, name: \"speaker_update\", kind: \"scalar\", T: 5, oneof: \"scenario\" },\n { no: 2, name: \"node_failure\", kind: \"scalar\", T: 8, oneof: \"scenario\" },\n { no: 3, name: \"migration\", kind: \"scalar\", T: 8, oneof: \"scenario\" },\n { no: 4, name: \"server_leave\", kind: \"scalar\", T: 8, oneof: \"scenario\" },\n { no: 5, name: \"switch_candidate_protocol\", kind: \"enum\", T: proto3.getEnumType(CandidateProtocol), oneof: \"scenario\" },\n { no: 6, name: \"subscriber_bandwidth\", kind: \"scalar\", T: 3, oneof: \"scenario\" },\n { no: 7, name: \"disconnect_signal_on_resume\", kind: \"scalar\", T: 8, oneof: \"scenario\" },\n { no: 8, name: \"disconnect_signal_on_resume_no_messages\", kind: \"scalar\", T: 8, oneof: \"scenario\" },\n { no: 9, name: \"leave_request_full_reconnect\", kind: \"scalar\", T: 8, oneof: \"scenario\" }\n ]\n);\nconst Ping = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Ping\",\n () => [\n {\n no: 1,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 2,\n name: \"rtt\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst Pong = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.Pong\",\n () => [\n {\n no: 1,\n name: \"last_ping_timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 2,\n name: \"timestamp\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst RegionSettings = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RegionSettings\",\n () => [\n { no: 1, name: \"regions\", kind: \"message\", T: RegionInfo, repeated: true }\n ]\n);\nconst RegionInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RegionInfo\",\n () => [\n {\n no: 1,\n name: \"region\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"url\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"distance\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n }\n ]\n);\nconst SubscriptionResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SubscriptionResponse\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"err\", kind: \"enum\", T: proto3.getEnumType(SubscriptionError) }\n ]\n);\nconst RequestResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.RequestResponse\",\n () => [\n {\n no: 1,\n name: \"request_id\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 2, name: \"reason\", kind: \"enum\", T: proto3.getEnumType(RequestResponse_Reason) },\n {\n no: 3,\n name: \"message\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst RequestResponse_Reason = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.RequestResponse.Reason\",\n [\n { no: 0, name: \"OK\" },\n { no: 1, name: \"NOT_FOUND\" },\n { no: 2, name: \"NOT_ALLOWED\" },\n { no: 3, name: \"LIMIT_EXCEEDED\" }\n ]\n);\nconst TrackSubscribed = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TrackSubscribed\",\n () => [\n {\n no: 1,\n name: \"track_sid\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\n\nconst SIPTransport = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SIPTransport\",\n [\n { no: 0, name: \"SIP_TRANSPORT_AUTO\" },\n { no: 1, name: \"SIP_TRANSPORT_UDP\" },\n { no: 2, name: \"SIP_TRANSPORT_TCP\" },\n { no: 3, name: \"SIP_TRANSPORT_TLS\" }\n ]\n);\nconst SIPHeaderOptions = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SIPHeaderOptions\",\n [\n { no: 0, name: \"SIP_NO_HEADERS\" },\n { no: 1, name: \"SIP_X_HEADERS\" },\n { no: 2, name: \"SIP_ALL_HEADERS\" }\n ]\n);\nconst SIPCallStatus = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SIPCallStatus\",\n [\n { no: 0, name: \"SCS_CALL_INCOMING\" },\n { no: 1, name: \"SCS_PARTICIPANT_JOINED\" },\n { no: 2, name: \"SCS_ACTIVE\" },\n { no: 3, name: \"SCS_DISCONNECTED\" },\n { no: 4, name: \"SCS_ERROR\" }\n ]\n);\nconst SIPFeature = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SIPFeature\",\n [\n { no: 0, name: \"NONE\" },\n { no: 1, name: \"KRISP_ENABLED\" }\n ]\n);\nconst CreateSIPTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateSIPTrunkRequest\",\n () => [\n { no: 1, name: \"inbound_addresses\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 2,\n name: \"outbound_address\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"outbound_number\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"inbound_numbers_regex\", kind: \"scalar\", T: 9, repeated: true },\n { no: 9, name: \"inbound_numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 5,\n name: \"inbound_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"inbound_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"outbound_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"outbound_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 10,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPTrunkInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPTrunkInfo\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 14, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(SIPTrunkInfo_TrunkKind) },\n { no: 2, name: \"inbound_addresses\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 3,\n name: \"outbound_address\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"outbound_number\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 13, name: \"transport\", kind: \"enum\", T: proto3.getEnumType(SIPTransport) },\n { no: 5, name: \"inbound_numbers_regex\", kind: \"scalar\", T: 9, repeated: true },\n { no: 10, name: \"inbound_numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 6,\n name: \"inbound_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"inbound_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"outbound_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 9,\n name: \"outbound_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 11,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 12,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPTrunkInfo_TrunkKind = /* @__PURE__ */ proto3.makeEnum(\n \"livekit.SIPTrunkInfo.TrunkKind\",\n [\n { no: 0, name: \"TRUNK_LEGACY\" },\n { no: 1, name: \"TRUNK_INBOUND\" },\n { no: 2, name: \"TRUNK_OUTBOUND\" }\n ]\n);\nconst CreateSIPInboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateSIPInboundTrunkRequest\",\n () => [\n { no: 1, name: \"trunk\", kind: \"message\", T: SIPInboundTrunkInfo }\n ]\n);\nconst SIPInboundTrunkInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPInboundTrunkInfo\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 4, name: \"numbers\", kind: \"scalar\", T: 9, repeated: true },\n { no: 5, name: \"allowed_addresses\", kind: \"scalar\", T: 9, repeated: true },\n { no: 6, name: \"allowed_numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 7,\n name: \"auth_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"auth_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 9, name: \"headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 10, name: \"headers_to_attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 14, name: \"attributes_to_headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 15, name: \"include_headers\", kind: \"enum\", T: proto3.getEnumType(SIPHeaderOptions) },\n { no: 11, name: \"ringing_timeout\", kind: \"message\", T: Duration },\n { no: 12, name: \"max_call_duration\", kind: \"message\", T: Duration },\n {\n no: 13,\n name: \"krisp_enabled\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst CreateSIPOutboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateSIPOutboundTrunkRequest\",\n () => [\n { no: 1, name: \"trunk\", kind: \"message\", T: SIPOutboundTrunkInfo }\n ]\n);\nconst SIPOutboundTrunkInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPOutboundTrunkInfo\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"address\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 5, name: \"transport\", kind: \"enum\", T: proto3.getEnumType(SIPTransport) },\n { no: 6, name: \"numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 7,\n name: \"auth_username\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"auth_password\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 9, name: \"headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 10, name: \"headers_to_attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 11, name: \"attributes_to_headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 12, name: \"include_headers\", kind: \"enum\", T: proto3.getEnumType(SIPHeaderOptions) }\n ]\n);\nconst GetSIPInboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.GetSIPInboundTrunkRequest\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst GetSIPInboundTrunkResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.GetSIPInboundTrunkResponse\",\n () => [\n { no: 1, name: \"trunk\", kind: \"message\", T: SIPInboundTrunkInfo }\n ]\n);\nconst GetSIPOutboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.GetSIPOutboundTrunkRequest\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst GetSIPOutboundTrunkResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.GetSIPOutboundTrunkResponse\",\n () => [\n { no: 1, name: \"trunk\", kind: \"message\", T: SIPOutboundTrunkInfo }\n ]\n);\nconst ListSIPTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPTrunkRequest\",\n []\n);\nconst ListSIPTrunkResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPTrunkResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: SIPTrunkInfo, repeated: true }\n ]\n);\nconst ListSIPInboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPInboundTrunkRequest\",\n () => [\n { no: 1, name: \"trunk_ids\", kind: \"scalar\", T: 9, repeated: true },\n { no: 2, name: \"numbers\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ListSIPInboundTrunkResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPInboundTrunkResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: SIPInboundTrunkInfo, repeated: true }\n ]\n);\nconst ListSIPOutboundTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPOutboundTrunkRequest\",\n () => [\n { no: 1, name: \"trunk_ids\", kind: \"scalar\", T: 9, repeated: true },\n { no: 2, name: \"numbers\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ListSIPOutboundTrunkResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPOutboundTrunkResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: SIPOutboundTrunkInfo, repeated: true }\n ]\n);\nconst DeleteSIPTrunkRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteSIPTrunkRequest\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPDispatchRuleDirect = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPDispatchRuleDirect\",\n () => [\n {\n no: 1,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"pin\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPDispatchRuleIndividual = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPDispatchRuleIndividual\",\n () => [\n {\n no: 1,\n name: \"room_prefix\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"pin\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPDispatchRuleCallee = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPDispatchRuleCallee\",\n () => [\n {\n no: 1,\n name: \"room_prefix\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"pin\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"randomize\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst SIPDispatchRule = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPDispatchRule\",\n () => [\n { no: 1, name: \"dispatch_rule_direct\", kind: \"message\", T: SIPDispatchRuleDirect, oneof: \"rule\" },\n { no: 2, name: \"dispatch_rule_individual\", kind: \"message\", T: SIPDispatchRuleIndividual, oneof: \"rule\" },\n { no: 3, name: \"dispatch_rule_callee\", kind: \"message\", T: SIPDispatchRuleCallee, oneof: \"rule\" }\n ]\n);\nconst CreateSIPDispatchRuleRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateSIPDispatchRuleRequest\",\n () => [\n { no: 1, name: \"rule\", kind: \"message\", T: SIPDispatchRule },\n { no: 2, name: \"trunk_ids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 3,\n name: \"hide_phone_number\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 6, name: \"inbound_numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 4,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 7, name: \"attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n {\n no: 8,\n name: \"room_preset\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 9, name: \"room_config\", kind: \"message\", T: RoomConfiguration }\n ]\n);\nconst SIPDispatchRuleInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPDispatchRuleInfo\",\n () => [\n {\n no: 1,\n name: \"sip_dispatch_rule_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"rule\", kind: \"message\", T: SIPDispatchRule },\n { no: 3, name: \"trunk_ids\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 4,\n name: \"hide_phone_number\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 7, name: \"inbound_numbers\", kind: \"scalar\", T: 9, repeated: true },\n {\n no: 5,\n name: \"name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 8, name: \"attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n {\n no: 9,\n name: \"room_preset\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 10, name: \"room_config\", kind: \"message\", T: RoomConfiguration }\n ]\n);\nconst ListSIPDispatchRuleRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPDispatchRuleRequest\",\n () => [\n { no: 1, name: \"dispatch_rule_ids\", kind: \"scalar\", T: 9, repeated: true },\n { no: 2, name: \"trunk_ids\", kind: \"scalar\", T: 9, repeated: true }\n ]\n);\nconst ListSIPDispatchRuleResponse = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.ListSIPDispatchRuleResponse\",\n () => [\n { no: 1, name: \"items\", kind: \"message\", T: SIPDispatchRuleInfo, repeated: true }\n ]\n);\nconst DeleteSIPDispatchRuleRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.DeleteSIPDispatchRuleRequest\",\n () => [\n {\n no: 1,\n name: \"sip_dispatch_rule_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst CreateSIPParticipantRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.CreateSIPParticipantRequest\",\n () => [\n {\n no: 1,\n name: \"sip_trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"sip_call_to\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 15,\n name: \"sip_number\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"participant_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 8,\n name: \"participant_metadata\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 9, name: \"participant_attributes\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n {\n no: 5,\n name: \"dtmf\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 6,\n name: \"play_ringtone\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 13,\n name: \"play_dialtone\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n {\n no: 10,\n name: \"hide_phone_number\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 16, name: \"headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } },\n { no: 17, name: \"include_headers\", kind: \"enum\", T: proto3.getEnumType(SIPHeaderOptions) },\n { no: 11, name: \"ringing_timeout\", kind: \"message\", T: Duration },\n { no: 12, name: \"max_call_duration\", kind: \"message\", T: Duration },\n {\n no: 14,\n name: \"enable_krisp\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n }\n ]\n);\nconst SIPParticipantInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPParticipantInfo\",\n () => [\n {\n no: 1,\n name: \"participant_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"sip_call_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst TransferSIPParticipantRequest = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.TransferSIPParticipantRequest\",\n () => [\n {\n no: 1,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"transfer_to\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"play_dialtone\",\n kind: \"scalar\",\n T: 8\n /* ScalarType.BOOL */\n },\n { no: 5, name: \"headers\", kind: \"map\", K: 9, V: {\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n } }\n ]\n);\nconst SIPCallInfo = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPCallInfo\",\n () => [\n {\n no: 1,\n name: \"call_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"trunk_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"room_name\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"room_id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 5,\n name: \"participant_identity\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 6, name: \"from_uri\", kind: \"message\", T: SIPUri },\n { no: 7, name: \"to_uri\", kind: \"message\", T: SIPUri },\n { no: 14, name: \"enabled_features\", kind: \"enum\", T: proto3.getEnumType(SIPFeature), repeated: true },\n { no: 8, name: \"call_status\", kind: \"enum\", T: proto3.getEnumType(SIPCallStatus) },\n {\n no: 9,\n name: \"created_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 10,\n name: \"started_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 11,\n name: \"ended_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n { no: 12, name: \"disconnect_reason\", kind: \"enum\", T: proto3.getEnumType(DisconnectReason) },\n {\n no: 13,\n name: \"error\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n }\n ]\n);\nconst SIPUri = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.SIPUri\",\n () => [\n {\n no: 1,\n name: \"user\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 2,\n name: \"host\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 3,\n name: \"ip\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 4,\n name: \"port\",\n kind: \"scalar\",\n T: 13\n /* ScalarType.UINT32 */\n },\n { no: 5, name: \"transport\", kind: \"enum\", T: proto3.getEnumType(SIPTransport) }\n ]\n);\n\nconst WebhookEvent = /* @__PURE__ */ proto3.makeMessageType(\n \"livekit.WebhookEvent\",\n () => [\n {\n no: 1,\n name: \"event\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n { no: 2, name: \"room\", kind: \"message\", T: Room },\n { no: 3, name: \"participant\", kind: \"message\", T: ParticipantInfo },\n { no: 9, name: \"egress_info\", kind: \"message\", T: EgressInfo },\n { no: 10, name: \"ingress_info\", kind: \"message\", T: IngressInfo },\n { no: 8, name: \"track\", kind: \"message\", T: TrackInfo },\n {\n no: 6,\n name: \"id\",\n kind: \"scalar\",\n T: 9\n /* ScalarType.STRING */\n },\n {\n no: 7,\n name: \"created_at\",\n kind: \"scalar\",\n T: 3\n /* ScalarType.INT64 */\n },\n {\n no: 11,\n name: \"num_dropped\",\n kind: \"scalar\",\n T: 5\n /* ScalarType.INT32 */\n }\n ]\n);\n\nconst version = \"1.30.0\";\n\nexport { ActiveSpeakerUpdate, AddTrackRequest, AgentDispatch, AgentDispatchState, AliOSSUpload, AudioCodec, AudioTrackFeature, AutoParticipantEgress, AutoTrackEgress, AvailabilityRequest, AvailabilityResponse, AzureBlobUpload, CandidateProtocol, ChatMessage, ClientConfigSetting, ClientConfiguration, ClientInfo, ClientInfo_SDK, Codec, ConnectionQuality, ConnectionQualityInfo, ConnectionQualityUpdate, CreateAgentDispatchRequest, CreateIngressRequest, CreateRoomRequest, CreateSIPDispatchRuleRequest, CreateSIPInboundTrunkRequest, CreateSIPOutboundTrunkRequest, CreateSIPParticipantRequest, CreateSIPTrunkRequest, DataChannelInfo, DataPacket, DataPacket_Kind, DataStream, DataStream_Chunk, DataStream_FileHeader, DataStream_Header, DataStream_OperationType, DataStream_TextHeader, DeleteAgentDispatchRequest, DeleteIngressRequest, DeleteRoomRequest, DeleteRoomResponse, DeleteSIPDispatchRuleRequest, DeleteSIPTrunkRequest, DirectFileOutput, DisabledCodecs, DisconnectReason, EgressInfo, EgressSourceType, EgressStatus, EncodedFileOutput, EncodedFileType, EncodingOptions, EncodingOptionsPreset, Encryption, Encryption_Type, EventMetric, FileInfo, GCPUpload, GetSIPInboundTrunkRequest, GetSIPInboundTrunkResponse, GetSIPOutboundTrunkRequest, GetSIPOutboundTrunkResponse, ICEServer, ImageCodec, ImageFileSuffix, ImageOutput, ImagesInfo, IngressAudioEncodingOptions, IngressAudioEncodingPreset, IngressAudioOptions, IngressInfo, IngressInput, IngressState, IngressState_Status, IngressVideoEncodingOptions, IngressVideoEncodingPreset, IngressVideoOptions, InputAudioState, InputVideoState, Job, JobAssignment, JobState, JobStatus, JobTermination, JobType, JoinResponse, LeaveRequest, LeaveRequest_Action, ListAgentDispatchRequest, ListAgentDispatchResponse, ListEgressRequest, ListEgressResponse, ListIngressRequest, ListIngressResponse, ListParticipantsRequest, ListParticipantsResponse, ListRoomsRequest, ListRoomsResponse, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, ListSIPTrunkRequest, ListSIPTrunkResponse, MetricLabel, MetricSample, MetricsBatch, MigrateJobRequest, MuteRoomTrackRequest, MuteRoomTrackResponse, MuteTrackRequest, ParticipantEgressRequest, ParticipantInfo, ParticipantInfo_Kind, ParticipantInfo_State, ParticipantPermission, ParticipantTracks, ParticipantUpdate, Ping, PlayoutDelay, Pong, ProxyConfig, RTCPSenderReportState, RTPDrift, RTPForwarderState, RTPMungerState, RTPStats, ReconnectReason, ReconnectResponse, RegionInfo, RegionSettings, RegisterWorkerRequest, RegisterWorkerResponse, RemoveParticipantResponse, RequestResponse, RequestResponse_Reason, Room, RoomAgent, RoomAgentDispatch, RoomCompositeEgressRequest, RoomConfiguration, RoomEgress, RoomParticipantIdentity, RoomUpdate, RpcAck, RpcError, RpcRequest, RpcResponse, S3Upload, SIPCallInfo, SIPCallStatus, SIPDispatchRule, SIPDispatchRuleCallee, SIPDispatchRuleDirect, SIPDispatchRuleIndividual, SIPDispatchRuleInfo, SIPFeature, SIPHeaderOptions, SIPInboundTrunkInfo, SIPOutboundTrunkInfo, SIPParticipantInfo, SIPTransport, SIPTrunkInfo, SIPTrunkInfo_TrunkKind, SIPUri, SegmentedFileOutput, SegmentedFileProtocol, SegmentedFileSuffix, SegmentsInfo, SendDataRequest, SendDataResponse, ServerInfo, ServerInfo_Edition, ServerMessage, SessionDescription, SignalRequest, SignalResponse, SignalTarget, SimulateJobRequest, SimulateScenario, SimulcastCodec, SimulcastCodecInfo, SipDTMF, SpeakerInfo, SpeakersChanged, StopEgressRequest, StreamInfo, StreamInfoList, StreamInfo_Status, StreamOutput, StreamProtocol, StreamState, StreamStateInfo, StreamStateUpdate, SubscribedCodec, SubscribedQuality, SubscribedQualityUpdate, SubscriptionError, SubscriptionPermission, SubscriptionPermissionUpdate, SubscriptionResponse, SyncState, TimeSeriesMetric, TimedVersion, TrackCompositeEgressRequest, TrackEgressRequest, TrackInfo, TrackPermission, TrackPublishedResponse, TrackSource, TrackSubscribed, TrackType, TrackUnpublishedResponse, Transcription, TranscriptionSegment, TransferSIPParticipantRequest, TrickleRequest, UpdateIngressRequest, UpdateJobStatus, UpdateLayoutRequest, UpdateLocalAudioTrack, UpdateLocalVideoTrack, UpdateParticipantMetadata, UpdateParticipantRequest, UpdateRoomMetadataRequest, UpdateStreamRequest, UpdateSubscription, UpdateSubscriptionsRequest, UpdateSubscriptionsResponse, UpdateTrackSettings, UpdateVideoLayers, UpdateWorkerStatus, UserPacket, VP8MungerState, VideoCodec, VideoConfiguration, VideoLayer, VideoQuality, WebEgressRequest, WebhookEvent, WorkerMessage, WorkerPing, WorkerPong, WorkerStatus, version };\n//# sourceMappingURL=index.mjs.map\n","import * as log from 'loglevel';\n\nexport enum LogLevel {\n trace = 0,\n debug = 1,\n info = 2,\n warn = 3,\n error = 4,\n silent = 5,\n}\n\nexport enum LoggerNames {\n Default = 'livekit',\n Room = 'livekit-room',\n Participant = 'livekit-participant',\n Track = 'livekit-track',\n Publication = 'livekit-track-publication',\n Engine = 'livekit-engine',\n Signal = 'livekit-signal',\n PCManager = 'livekit-pc-manager',\n PCTransport = 'livekit-pc-transport',\n E2EE = 'lk-e2ee',\n}\n\ntype LogLevelString = keyof typeof LogLevel;\n\nexport type StructuredLogger = log.Logger & {\n trace: (msg: string, context?: object) => void;\n debug: (msg: string, context?: object) => void;\n info: (msg: string, context?: object) => void;\n warn: (msg: string, context?: object) => void;\n error: (msg: string, context?: object) => void;\n setDefaultLevel: (level: log.LogLevelDesc) => void;\n setLevel: (level: log.LogLevelDesc) => void;\n getLevel: () => number;\n};\n\nlet livekitLogger = log.getLogger('livekit');\nconst livekitLoggers = Object.values(LoggerNames).map((name) => log.getLogger(name));\n\nlivekitLogger.setDefaultLevel(LogLevel.info);\n\nexport default livekitLogger as StructuredLogger;\n\n/**\n * @internal\n */\nexport function getLogger(name: string) {\n const logger = log.getLogger(name);\n logger.setDefaultLevel(livekitLogger.getLevel());\n return logger as StructuredLogger;\n}\n\nexport function setLogLevel(level: LogLevel | LogLevelString, loggerName?: LoggerNames) {\n if (loggerName) {\n log.getLogger(loggerName).setLevel(level);\n } else {\n for (const logger of livekitLoggers) {\n logger.setLevel(level);\n }\n }\n}\n\nexport type LogExtension = (level: LogLevel, msg: string, context?: object) => void;\n\n/**\n * use this to hook into the logging function to allow sending internal livekit logs to third party services\n * if set, the browser logs will lose their stacktrace information (see https://github.com/pimterry/loglevel#writing-plugins)\n */\nexport function setLogExtension(extension: LogExtension, logger?: StructuredLogger) {\n const loggers = logger ? [logger] : livekitLoggers;\n\n loggers.forEach((logR) => {\n const originalFactory = logR.methodFactory;\n\n logR.methodFactory = (methodName, configLevel, loggerName) => {\n const rawMethod = originalFactory(methodName, configLevel, loggerName);\n\n const logLevel = LogLevel[methodName as LogLevelString];\n const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;\n\n return (msg, context?: [msg: string, context: object]) => {\n if (context) rawMethod(msg, context);\n else rawMethod(msg);\n if (needLog) {\n extension(logLevel, msg, context);\n }\n };\n };\n logR.setLevel(logR.getLevel());\n });\n}\n\nexport const workerLogger = log.getLogger('lk-e2ee') as StructuredLogger;\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n var _loggersByName = {};\n var defaultLogger = null;\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods() {\n /*jshint validthis:true */\n var level = this.getLevel();\n\n // Replace the actual methods.\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, this.name);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n\n // Return any important warnings.\n if (typeof console === undefinedType && level < this.levels.SILENT) {\n return \"No console available for logging\";\n }\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, _level, _loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, factory) {\n // Private instance variables.\n var self = this;\n /**\n * The level inherited from a parent logger (or a global default). We\n * cache this here rather than delegating to the parent so that it stays\n * in sync with the actual logging methods that we have installed (the\n * parent could change levels but we might not have rebuilt the loggers\n * in this child yet).\n * @type {number}\n */\n var inheritedLevel;\n /**\n * The default level for this logger, if any. If set, this overrides\n * `inheritedLevel`.\n * @type {number|null}\n */\n var defaultLevel;\n /**\n * A user-specific level for this logger. If set, this overrides\n * `defaultLevel`.\n * @type {number|null}\n */\n var userLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var cookieName = encodeURIComponent(storageKey);\n var location = cookie.indexOf(cookieName + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(\n cookie.slice(location + cookieName.length + 1)\n )[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n function normalizeLevel(input) {\n var level = input;\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n return level;\n } else {\n throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n }\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n if (userLevel != null) {\n return userLevel;\n } else if (defaultLevel != null) {\n return defaultLevel;\n } else {\n return inheritedLevel;\n }\n };\n\n self.setLevel = function (level, persist) {\n userLevel = normalizeLevel(level);\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(userLevel);\n }\n\n // NOTE: in v2, this should call rebuild(), which updates children.\n return replaceLoggingMethods.call(self);\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = normalizeLevel(level);\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n userLevel = null;\n clearPersistedLevel();\n replaceLoggingMethods.call(self);\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n self.rebuild = function () {\n if (defaultLogger !== self) {\n inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n }\n replaceLoggingMethods.call(self);\n\n if (defaultLogger === self) {\n for (var childName in _loggersByName) {\n _loggersByName[childName].rebuild();\n }\n }\n };\n\n // Initialize all the internal levels.\n inheritedLevel = normalizeLevel(\n defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n );\n var initialLevel = getPersistedLevel();\n if (initialLevel != null) {\n userLevel = normalizeLevel(initialLevel);\n }\n replaceLoggingMethods.call(self);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n defaultLogger = new Logger();\n\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name,\n defaultLogger.methodFactory\n );\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","import type { ReconnectContext, ReconnectPolicy } from './ReconnectPolicy';\n\nconst maxRetryDelay = 7000;\n\nconst DEFAULT_RETRY_DELAYS_IN_MS = [\n 0,\n 300,\n 2 * 2 * 300,\n 3 * 3 * 300,\n 4 * 4 * 300,\n maxRetryDelay,\n maxRetryDelay,\n maxRetryDelay,\n maxRetryDelay,\n maxRetryDelay,\n];\n\nclass DefaultReconnectPolicy implements ReconnectPolicy {\n private readonly _retryDelays: number[];\n\n constructor(retryDelays?: number[]) {\n this._retryDelays = retryDelays !== undefined ? [...retryDelays] : DEFAULT_RETRY_DELAYS_IN_MS;\n }\n\n public nextRetryDelayInMs(context: ReconnectContext): number | null {\n if (context.retryCount >= this._retryDelays.length) return null;\n\n const retryDelay = this._retryDelays[context.retryCount];\n if (context.retryCount <= 1) return retryDelay;\n\n return retryDelay + Math.random() * 1_000;\n }\n}\n\nexport default DefaultReconnectPolicy;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nlet logDisabled_ = true;\nlet deprecationWarnings_ = true;\n\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\nexport function extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n}\n\n// Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\nexport function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n const nativeAddEventListener = proto.addEventListener;\n proto.addEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n const wrappedCallback = (e) => {\n const modifiedEvent = wrapper(e);\n if (modifiedEvent) {\n if (cb.handleEvent) {\n cb.handleEvent(modifiedEvent);\n } else {\n cb(modifiedEvent);\n }\n }\n };\n this._eventMap = this._eventMap || {};\n if (!this._eventMap[eventNameToWrap]) {\n this._eventMap[eventNameToWrap] = new Map();\n }\n this._eventMap[eventNameToWrap].set(cb, wrappedCallback);\n return nativeAddEventListener.apply(this, [nativeEventName,\n wrappedCallback]);\n };\n\n const nativeRemoveEventListener = proto.removeEventListener;\n proto.removeEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap\n || !this._eventMap[eventNameToWrap]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (!this._eventMap[eventNameToWrap].has(cb)) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n const unwrappedCb = this._eventMap[eventNameToWrap].get(cb);\n this._eventMap[eventNameToWrap].delete(cb);\n if (this._eventMap[eventNameToWrap].size === 0) {\n delete this._eventMap[eventNameToWrap];\n }\n if (Object.keys(this._eventMap).length === 0) {\n delete this._eventMap;\n }\n return nativeRemoveEventListener.apply(this, [nativeEventName,\n unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get() {\n return this['_on' + eventNameToWrap];\n },\n set(cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n if (cb) {\n this.addEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\nexport function disableLog(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n}\n\n/**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\nexport function disableWarnings(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n}\n\nexport function log() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n}\n\n/**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\nexport function deprecated(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod +\n ' instead.');\n}\n\n/**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\nexport function detectBrowser(window) {\n // Returned result object.\n const result = {browser: null, version: null};\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator ||\n !window.navigator.userAgent) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n const {navigator} = window;\n\n // Prefer navigator.userAgentData.\n if (navigator.userAgentData && navigator.userAgentData.brands) {\n const chromium = navigator.userAgentData.brands.find((brand) => {\n return brand.brand === 'Chromium';\n });\n if (chromium) {\n return {browser: 'chrome', version: parseInt(chromium.version, 10)};\n }\n }\n\n if (navigator.mozGetUserMedia) { // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent,\n /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia ||\n (window.isSecureContext === false && window.webkitRTCPeerConnection)) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n // Chrome 74 removed webkitGetUserMedia on http as well so we need the\n // more complicated fallback to webkitRTCPeerConnection.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) { // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./, 1);\n result.supportsUnifiedPlan = window.RTCRtpTransceiver &&\n 'currentDirection' in window.RTCRtpTransceiver.prototype;\n } else { // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n}\n\n/**\n * Checks if something is an object.\n *\n * @param {*} val The something you want to check.\n * @return true if val is an object, false otherwise.\n */\nfunction isObject(val) {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\n/**\n * Remove all empty objects and undefined values\n * from a nested object -- an enhanced and vanilla version\n * of Lodash's `compact`.\n */\nexport function compactObject(data) {\n if (!isObject(data)) {\n return data;\n }\n\n return Object.keys(data).reduce(function(accumulator, key) {\n const isObj = isObject(data[key]);\n const value = isObj ? compactObject(data[key]) : data[key];\n const isEmptyObject = isObj && !Object.keys(value).length;\n if (value === undefined || isEmptyObject) {\n return accumulator;\n }\n return Object.assign(accumulator, {[key]: value});\n }, {});\n}\n\n/* iterates the stats graph recursively. */\nexport function walkStats(stats, base, resultSet) {\n if (!base || resultSet.has(base.id)) {\n return;\n }\n resultSet.set(base.id, base);\n Object.keys(base).forEach(name => {\n if (name.endsWith('Id')) {\n walkStats(stats, stats.get(base[name]), resultSet);\n } else if (name.endsWith('Ids')) {\n base[name].forEach(id => {\n walkStats(stats, stats.get(id), resultSet);\n });\n }\n });\n}\n\n/* filter getStats for a sender/receiver track. */\nexport function filterStats(result, track, outbound) {\n const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\n const filteredResult = new Map();\n if (track === null) {\n return filteredResult;\n }\n const trackStats = [];\n result.forEach(value => {\n if (value.type === 'track' &&\n value.trackIdentifier === track.id) {\n trackStats.push(value);\n }\n });\n trackStats.forEach(trackStat => {\n result.forEach(stats => {\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\n walkStats(result, stats, filteredResult);\n }\n });\n });\n return filteredResult;\n}\n\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\nconst logging = utils.log;\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n\n if (!navigator.mediaDevices) {\n return;\n }\n\n const constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n const cc = {};\n Object.keys(c).forEach(key => {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n const oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n let oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(mix => {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n const shimConstraints_ = function(constraints, func) {\n if (browserDetails.version >= 61) {\n return func(constraints);\n }\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && typeof constraints.audio === 'object') {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile & surface pro.\n let face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n const getSupportedFacingModeLies = browserDetails.version < 66;\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode &&\n !getSupportedFacingModeLies)) {\n delete constraints.video.facingMode;\n let matches;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n matches = ['back', 'rear'];\n } else if (face.exact === 'user' || face.ideal === 'user') {\n matches = ['front'];\n }\n if (matches) {\n // Look for matches in label, or use last cam for back (typical).\n return navigator.mediaDevices.enumerateDevices()\n .then(devices => {\n devices = devices.filter(d => d.kind === 'videoinput');\n let dev = devices.find(d => matches.some(match =>\n d.label.toLowerCase().includes(match)));\n if (!dev && devices.length && matches.includes('back')) {\n dev = devices[devices.length - 1]; // more likely the back cam\n }\n if (dev) {\n constraints.video.deviceId = face.exact\n ? {exact: dev.deviceId}\n : {ideal: dev.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n const shimError_ = function(e) {\n if (browserDetails.version >= 64) {\n return e;\n }\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n PermissionDismissedError: 'NotAllowedError',\n InvalidStateError: 'NotAllowedError',\n DevicesNotFoundError: 'NotFoundError',\n ConstraintNotSatisfiedError: 'OverconstrainedError',\n TrackStartError: 'NotReadableError',\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\n MediaDeviceKillSwitchOn: 'NotAllowedError',\n TabCaptureError: 'AbortError',\n ScreenCaptureError: 'AbortError',\n DeviceCaptureError: 'AbortError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint || e.constraintName,\n toString() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n const getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, c => {\n navigator.webkitGetUserMedia(c, onSuccess, e => {\n if (onError) {\n onError(shimError_(e));\n }\n });\n });\n };\n navigator.getUserMedia = getUserMedia_.bind(navigator);\n\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n if (navigator.mediaDevices.getUserMedia) {\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => {\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(track => {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n return stream;\n }, e => Promise.reject(shimError_(e))));\n };\n }\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\n\nexport {shimGetUserMedia} from './getusermedia';\n\nexport function shimMediaStream(window) {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n}\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get() {\n return this._ontrack;\n },\n set(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n }\n this.addEventListener('track', this._ontrack = f);\n },\n enumerable: true,\n configurable: true\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n if (!this._ontrackpoly) {\n this._ontrackpoly = (e) => {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', te => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === te.track.id);\n } else {\n receiver = {track: te.track};\n }\n\n const event = new Event('track');\n event.track = te.track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(track => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === track.id);\n } else {\n receiver = {track};\n }\n const event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n };\n this.addEventListener('addstream', this._ontrackpoly);\n }\n return origSetRemoteDescription.apply(this, arguments);\n };\n } else {\n // even if RTCRtpTransceiver is in window, it is only used and\n // emitted in unified-plan. Unfortunately this means we need\n // to unconditionally wrap the event.\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n if (!e.transceiver) {\n Object.defineProperty(e, 'transceiver',\n {value: {receiver: e.receiver}});\n }\n return e;\n });\n }\n}\n\nexport function shimGetSendersWithDtmf(window) {\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\n if (typeof window === 'object' && window.RTCPeerConnection &&\n !('getSenders' in window.RTCPeerConnection.prototype) &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype) {\n const shimSenderWithDtmf = function(pc, track) {\n return {\n track,\n get dtmf() {\n if (this._dtmf === undefined) {\n if (track.kind === 'audio') {\n this._dtmf = pc.createDTMFSender(track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n },\n _pc: pc\n };\n };\n\n // augment addTrack when getSenders is not available.\n if (!window.RTCPeerConnection.prototype.getSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n this._senders = this._senders || [];\n return this._senders.slice(); // return a copy of the internal state.\n };\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n let sender = origAddTrack.apply(this, arguments);\n if (!sender) {\n sender = shimSenderWithDtmf(this, track);\n this._senders.push(sender);\n }\n return sender;\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n origRemoveTrack.apply(this, arguments);\n const idx = this._senders.indexOf(sender);\n if (idx !== -1) {\n this._senders.splice(idx, 1);\n }\n };\n }\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._senders = this._senders || [];\n origAddStream.apply(this, [stream]);\n stream.getTracks().forEach(track => {\n this._senders.push(shimSenderWithDtmf(this, track));\n });\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._senders = this._senders || [];\n origRemoveStream.apply(this, [stream]);\n\n stream.getTracks().forEach(track => {\n const sender = this._senders.find(s => s.track === track);\n if (sender) { // remove sender\n this._senders.splice(this._senders.indexOf(sender), 1);\n }\n });\n };\n } else if (typeof window === 'object' && window.RTCPeerConnection &&\n 'getSenders' in window.RTCPeerConnection.prototype &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype &&\n window.RTCRtpSender &&\n !('dtmf' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = this._pc.createDTMFSender(this.track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n}\n\nexport function shimSenderReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender && window.RTCRtpReceiver)) {\n return;\n }\n\n // shim sender stats.\n if (!('getStats' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n const sender = this;\n return this._pc.getStats().then(result =>\n /* Note: this will include stats of all senders that\n * send a track with the same id as sender.track as\n * it is not possible to identify the RTCRtpSender.\n */\n utils.filterStats(result, sender.track, true));\n };\n }\n\n // shim receiver stats.\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers =\n function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n const receiver = this;\n return this._pc.getStats().then(result =>\n utils.filterStats(result, receiver.track, false));\n };\n }\n\n if (!('getStats' in window.RTCRtpSender.prototype &&\n 'getStats' in window.RTCRtpReceiver.prototype)) {\n return;\n }\n\n // shim RTCPeerConnection.getStats(track).\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n if (arguments.length > 0 &&\n arguments[0] instanceof window.MediaStreamTrack) {\n const track = arguments[0];\n let sender;\n let receiver;\n let err;\n this.getSenders().forEach(s => {\n if (s.track === track) {\n if (sender) {\n err = true;\n } else {\n sender = s;\n }\n }\n });\n this.getReceivers().forEach(r => {\n if (r.track === track) {\n if (receiver) {\n err = true;\n } else {\n receiver = r;\n }\n }\n return r.track === track;\n });\n if (err || (sender && receiver)) {\n return Promise.reject(new DOMException(\n 'There are more than one sender or receiver for the track.',\n 'InvalidAccessError'));\n } else if (sender) {\n return sender.getStats();\n } else if (receiver) {\n return receiver.getStats();\n }\n return Promise.reject(new DOMException(\n 'There is no sender or receiver for the track.',\n 'InvalidAccessError'));\n }\n return origGetStats.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrackWithNative(window) {\n // shim addTrack/removeTrack with native variants in order to make\n // the interactions with legacy getLocalStreams behave as in other browsers.\n // Keeps a mapping stream.id => [stream, rtpsenders...]\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n return Object.keys(this._shimmedLocalStreams)\n .map(streamId => this._shimmedLocalStreams[streamId][0]);\n };\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (!stream) {\n return origAddTrack.apply(this, arguments);\n }\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n const sender = origAddTrack.apply(this, arguments);\n if (!this._shimmedLocalStreams[stream.id]) {\n this._shimmedLocalStreams[stream.id] = [stream, sender];\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\n this._shimmedLocalStreams[stream.id].push(sender);\n }\n return sender;\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n const existingSenders = this.getSenders();\n origAddStream.apply(this, arguments);\n const newSenders = this.getSenders()\n .filter(newSender => existingSenders.indexOf(newSender) === -1);\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n delete this._shimmedLocalStreams[stream.id];\n return origRemoveStream.apply(this, arguments);\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n if (sender) {\n Object.keys(this._shimmedLocalStreams).forEach(streamId => {\n const idx = this._shimmedLocalStreams[streamId].indexOf(sender);\n if (idx !== -1) {\n this._shimmedLocalStreams[streamId].splice(idx, 1);\n }\n if (this._shimmedLocalStreams[streamId].length === 1) {\n delete this._shimmedLocalStreams[streamId];\n }\n });\n }\n return origRemoveTrack.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrack(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // shim addTrack and removeTrack.\n if (window.RTCPeerConnection.prototype.addTrack &&\n browserDetails.version >= 65) {\n return shimAddTrackRemoveTrackWithNative(window);\n }\n\n // also shim pc.getLocalStreams when addTrack is shimmed\n // to return the original streams.\n const origGetLocalStreams = window.RTCPeerConnection.prototype\n .getLocalStreams;\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n const nativeStreams = origGetLocalStreams.apply(this);\n this._reverseStreams = this._reverseStreams || {};\n return nativeStreams.map(stream => this._reverseStreams[stream.id]);\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n // Add identity mapping for consistency with addTrack.\n // Unless this is being used with a stream from addTrack.\n if (!this._reverseStreams[stream.id]) {\n const newStream = new window.MediaStream(stream.getTracks());\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n stream = newStream;\n }\n origAddStream.apply(this, [stream]);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]);\n delete this._reverseStreams[(this._streams[stream.id] ?\n this._streams[stream.id].id : stream.id)];\n delete this._streams[stream.id];\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n const streams = [].slice.call(arguments, 1);\n if (streams.length !== 1 ||\n !streams[0].getTracks().find(t => t === track)) {\n // this is not fully correct but all we can manage without\n // [[associated MediaStreams]] internal slot.\n throw new DOMException(\n 'The adapter.js addTrack polyfill only supports a single ' +\n ' stream which is associated with the specified track.',\n 'NotSupportedError');\n }\n\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n const oldStream = this._streams[stream.id];\n if (oldStream) {\n // this is using odd Chrome behaviour, use with caution:\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\n // Note: we rely on the high-level addTrack/dtmf shim to\n // create the sender with a dtmf sender.\n oldStream.addTrack(track);\n\n // Trigger ONN async.\n Promise.resolve().then(() => {\n this.dispatchEvent(new Event('negotiationneeded'));\n });\n } else {\n const newStream = new window.MediaStream([track]);\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n this.addStream(newStream);\n }\n return this.getSenders().find(s => s.track === track);\n };\n\n // replace the internal stream id with the external one and\n // vice versa.\n function replaceInternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'),\n externalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n function replaceExternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'),\n internalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n ['createOffer', 'createAnswer'].forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n const args = arguments;\n const isLegacyCall = arguments.length &&\n typeof arguments[0] === 'function';\n if (isLegacyCall) {\n return nativeMethod.apply(this, [\n (description) => {\n const desc = replaceInternalStreamId(this, description);\n args[0].apply(null, [desc]);\n },\n (err) => {\n if (args[1]) {\n args[1].apply(null, err);\n }\n }, arguments[2]\n ]);\n }\n return nativeMethod.apply(this, arguments)\n .then(description => replaceInternalStreamId(this, description));\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n\n const origSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n if (!arguments.length || !arguments[0].type) {\n return origSetLocalDescription.apply(this, arguments);\n }\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\n return origSetLocalDescription.apply(this, arguments);\n };\n\n // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\n\n const origLocalDescription = Object.getOwnPropertyDescriptor(\n window.RTCPeerConnection.prototype, 'localDescription');\n Object.defineProperty(window.RTCPeerConnection.prototype,\n 'localDescription', {\n get() {\n const description = origLocalDescription.get.apply(this);\n if (description.type === '') {\n return description;\n }\n return replaceInternalStreamId(this, description);\n }\n });\n\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n // We can not yet check for sender instanceof RTCRtpSender\n // since we shim RTPSender. So we check if sender._pc is set.\n if (!sender._pc) {\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.', 'TypeError');\n }\n const isLocal = sender._pc === this;\n if (!isLocal) {\n throw new DOMException('Sender was not created by this connection.',\n 'InvalidAccessError');\n }\n\n // Search for the native stream the senders track belongs to.\n this._streams = this._streams || {};\n let stream;\n Object.keys(this._streams).forEach(streamid => {\n const hasTrack = this._streams[streamid].getTracks()\n .find(track => sender.track === track);\n if (hasTrack) {\n stream = this._streams[streamid];\n }\n });\n\n if (stream) {\n if (stream.getTracks().length === 1) {\n // if this is the last track of the stream, remove the stream. This\n // takes care of any shimmed _senders.\n this.removeStream(this._reverseStreams[stream.id]);\n } else {\n // relying on the same odd chrome behaviour as above.\n stream.removeTrack(sender.track);\n }\n this.dispatchEvent(new Event('negotiationneeded'));\n }\n };\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\n }\n if (!window.RTCPeerConnection) {\n return;\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n if (browserDetails.version < 53) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n}\n\n// Attempt to fix ONN in plan-b mode.\nexport function fixNegotiationNeeded(window, browserDetails) {\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => {\n const pc = e.target;\n if (browserDetails.version < 72 || (pc.getConfiguration &&\n pc.getConfiguration().sdpSemantics === 'plan-b')) {\n if (pc.signalingState !== 'stable') {\n return;\n }\n }\n return e;\n });\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n const MediaStreamTrack = window && window.MediaStreamTrack;\n\n navigator.getUserMedia = function(constraints, onSuccess, onError) {\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n utils.deprecated('navigator.getUserMedia',\n 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n\n if (!(browserDetails.version > 55 &&\n 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n const nativeGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n if (typeof c === 'object' && typeof c.audio === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeGetUserMedia(c);\n };\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\n const nativeGetSettings = MediaStreamTrack.prototype.getSettings;\n MediaStreamTrack.prototype.getSettings = function() {\n const obj = nativeGetSettings.apply(this, arguments);\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\n return obj;\n };\n }\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\n const nativeApplyConstraints =\n MediaStreamTrack.prototype.applyConstraints;\n MediaStreamTrack.prototype.applyConstraints = function(c) {\n if (this.kind === 'audio' && typeof c === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c, 'autoGainControl', 'mozAutoGainControl');\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeApplyConstraints.apply(this, [c]);\n };\n }\n }\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCTrackEvent &&\n ('receiver' in window.RTCTrackEvent.prototype) &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (typeof window !== 'object' ||\n !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.mozRTCPeerConnection;\n }\n\n if (browserDetails.version < 53) {\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n\n const modernStatsTypes = {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n };\n\n const nativeGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n return nativeGetStats.apply(this, [selector || null])\n .then(stats => {\n if (browserDetails.version < 53 && !onSucc) {\n // Shim only promise getStats with spec-hyphens in type names\n // Leave callback version alone; misc old uses of forEach before Map\n try {\n stats.forEach(stat => {\n stat.type = modernStatsTypes[stat.type] || stat.type;\n });\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\n stats.forEach((stat, i) => {\n stats.set(i, Object.assign({}, stat, {\n type: modernStatsTypes[stat.type] || stat.type\n }));\n });\n }\n }\n return stats;\n })\n .then(onSucc, onErr);\n };\n}\n\nexport function shimSenderGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\n return;\n }\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n return this.track ? this._pc.getStats(this.track) :\n Promise.resolve(new Map());\n };\n}\n\nexport function shimReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\n return;\n }\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n return this._pc.getStats(this.track);\n };\n}\n\nexport function shimRemoveStream(window) {\n if (!window.RTCPeerConnection ||\n 'removeStream' in window.RTCPeerConnection.prototype) {\n return;\n }\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n utils.deprecated('removeStream', 'removeTrack');\n this.getSenders().forEach(sender => {\n if (sender.track && stream.getTracks().includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n}\n\nexport function shimRTCDataChannel(window) {\n // rename DataChannel to RTCDataChannel (native fix in FF60):\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\n if (window.DataChannel && !window.RTCDataChannel) {\n window.RTCDataChannel = window.DataChannel;\n }\n}\n\nexport function shimAddTransceiver(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver;\n if (origAddTransceiver) {\n window.RTCPeerConnection.prototype.addTransceiver =\n function addTransceiver() {\n this.setParametersPromises = [];\n // WebIDL input coercion and validation\n let sendEncodings = arguments[1] && arguments[1].sendEncodings;\n if (sendEncodings === undefined) {\n sendEncodings = [];\n }\n sendEncodings = [...sendEncodings];\n const shouldPerformCheck = sendEncodings.length > 0;\n if (shouldPerformCheck) {\n // If sendEncodings params are provided, validate grammar\n sendEncodings.forEach((encodingParam) => {\n if ('rid' in encodingParam) {\n const ridRegex = /^[a-z0-9]{0,16}$/i;\n if (!ridRegex.test(encodingParam.rid)) {\n throw new TypeError('Invalid RID value provided.');\n }\n }\n if ('scaleResolutionDownBy' in encodingParam) {\n if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) {\n throw new RangeError('scale_resolution_down_by must be >= 1.0');\n }\n }\n if ('maxFramerate' in encodingParam) {\n if (!(parseFloat(encodingParam.maxFramerate) >= 0)) {\n throw new RangeError('max_framerate must be >= 0.0');\n }\n }\n });\n }\n const transceiver = origAddTransceiver.apply(this, arguments);\n if (shouldPerformCheck) {\n // Check if the init options were applied. If not we do this in an\n // asynchronous way and save the promise reference in a global object.\n // This is an ugly hack, but at the same time is way more robust than\n // checking the sender parameters before and after the createOffer\n // Also note that after the createoffer we are not 100% sure that\n // the params were asynchronously applied so we might miss the\n // opportunity to recreate offer.\n const {sender} = transceiver;\n const params = sender.getParameters();\n if (!('encodings' in params) ||\n // Avoid being fooled by patched getParameters() below.\n (params.encodings.length === 1 &&\n Object.keys(params.encodings[0]).length === 0)) {\n params.encodings = sendEncodings;\n sender.sendEncodings = sendEncodings;\n this.setParametersPromises.push(sender.setParameters(params)\n .then(() => {\n delete sender.sendEncodings;\n }).catch(() => {\n delete sender.sendEncodings;\n })\n );\n }\n }\n return transceiver;\n };\n }\n}\n\nexport function shimGetParameters(window) {\n if (!(typeof window === 'object' && window.RTCRtpSender)) {\n return;\n }\n const origGetParameters = window.RTCRtpSender.prototype.getParameters;\n if (origGetParameters) {\n window.RTCRtpSender.prototype.getParameters =\n function getParameters() {\n const params = origGetParameters.apply(this, arguments);\n if (!('encodings' in params)) {\n params.encodings = [].concat(this.sendEncodings || [{}]);\n }\n return params;\n };\n }\n}\n\nexport function shimCreateOffer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer = function createOffer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateOffer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimCreateAnswer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer;\n window.RTCPeerConnection.prototype.createAnswer = function createAnswer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateAnswer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateAnswer.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window, preferredMediaSource) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n if (!(constraints && constraints.video)) {\n const err = new DOMException('getDisplayMedia without video ' +\n 'constraints is undefined');\n err.name = 'NotFoundError';\n // from https://heycam.github.io/webidl/#idl-DOMException-error-names\n err.code = 8;\n return Promise.reject(err);\n }\n if (constraints.video === true) {\n constraints.video = {mediaSource: preferredMediaSource};\n } else {\n constraints.video.mediaSource = preferredMediaSource;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nimport * as utils from '../utils';\n\nexport function shimLocalStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n return this._localStreams;\n };\n }\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\n const _addTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n // Try to emulate Chrome's behaviour of adding in audio-video order.\n // Safari orders by track id.\n stream.getAudioTracks().forEach(track => _addTrack.call(this, track,\n stream));\n stream.getVideoTracks().forEach(track => _addTrack.call(this, track,\n stream));\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, ...streams) {\n if (streams) {\n streams.forEach((stream) => {\n if (!this._localStreams) {\n this._localStreams = [stream];\n } else if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n });\n }\n return _addTrack.apply(this, arguments);\n };\n }\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n const index = this._localStreams.indexOf(stream);\n if (index === -1) {\n return;\n }\n this._localStreams.splice(index, 1);\n const tracks = stream.getTracks();\n this.getSenders().forEach(sender => {\n if (tracks.includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n }\n}\n\nexport function shimRemoteStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getRemoteStreams =\n function getRemoteStreams() {\n return this._remoteStreams ? this._remoteStreams : [];\n };\n }\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\n get() {\n return this._onaddstream;\n },\n set(f) {\n if (this._onaddstream) {\n this.removeEventListener('addstream', this._onaddstream);\n this.removeEventListener('track', this._onaddstreampoly);\n }\n this.addEventListener('addstream', this._onaddstream = f);\n this.addEventListener('track', this._onaddstreampoly = (e) => {\n e.streams.forEach(stream => {\n if (!this._remoteStreams) {\n this._remoteStreams = [];\n }\n if (this._remoteStreams.includes(stream)) {\n return;\n }\n this._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n this.dispatchEvent(event);\n });\n });\n }\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n const pc = this;\n if (!this._onaddstreampoly) {\n this.addEventListener('track', this._onaddstreampoly = function(e) {\n e.streams.forEach(stream => {\n if (!pc._remoteStreams) {\n pc._remoteStreams = [];\n }\n if (pc._remoteStreams.indexOf(stream) >= 0) {\n return;\n }\n pc._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n pc.dispatchEvent(event);\n });\n });\n }\n return origSetRemoteDescription.apply(pc, arguments);\n };\n }\n}\n\nexport function shimCallbacksAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n const prototype = window.RTCPeerConnection.prototype;\n const origCreateOffer = prototype.createOffer;\n const origCreateAnswer = prototype.createAnswer;\n const setLocalDescription = prototype.setLocalDescription;\n const setRemoteDescription = prototype.setRemoteDescription;\n const addIceCandidate = prototype.addIceCandidate;\n\n prototype.createOffer =\n function createOffer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateOffer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.createAnswer =\n function createAnswer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateAnswer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n let withCallback = function(description, successCallback, failureCallback) {\n const promise = setLocalDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setLocalDescription = withCallback;\n\n withCallback = function(description, successCallback, failureCallback) {\n const promise = setRemoteDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setRemoteDescription = withCallback;\n\n withCallback = function(candidate, successCallback, failureCallback) {\n const promise = addIceCandidate.apply(this, [candidate]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.addIceCandidate = withCallback;\n}\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // shim not needed in Safari 12.1\n const mediaDevices = navigator.mediaDevices;\n const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n navigator.mediaDevices.getUserMedia = (constraints) => {\n return _getUserMedia(shimConstraints(constraints));\n };\n }\n\n if (!navigator.getUserMedia && navigator.mediaDevices &&\n navigator.mediaDevices.getUserMedia) {\n navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) {\n navigator.mediaDevices.getUserMedia(constraints)\n .then(cb, errcb);\n }.bind(navigator);\n }\n}\n\nexport function shimConstraints(constraints) {\n if (constraints && constraints.video !== undefined) {\n return Object.assign({},\n constraints,\n {video: utils.compactObject(constraints.video)}\n );\n }\n\n return constraints;\n}\n\nexport function shimRTCIceServerUrls(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\n const OrigPeerConnection = window.RTCPeerConnection;\n window.RTCPeerConnection =\n function RTCPeerConnection(pcConfig, pcConstraints) {\n if (pcConfig && pcConfig.iceServers) {\n const newIceServers = [];\n for (let i = 0; i < pcConfig.iceServers.length; i++) {\n let server = pcConfig.iceServers[i];\n if (server.urls === undefined && server.url) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n server = JSON.parse(JSON.stringify(server));\n server.urls = server.url;\n delete server.url;\n newIceServers.push(server);\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n return new OrigPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype;\n // wrap static methods. Currently just generateCertificate.\n if ('generateCertificate' in OrigPeerConnection) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get() {\n return OrigPeerConnection.generateCertificate;\n }\n });\n }\n}\n\nexport function shimTrackEventTransceiver(window) {\n // Add event.transceiver member over deprecated event.receiver\n if (typeof window === 'object' && window.RTCTrackEvent &&\n 'receiver' in window.RTCTrackEvent.prototype &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimCreateOfferLegacy(window) {\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer =\n function createOffer(offerOptions) {\n if (offerOptions) {\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveAudio =\n !!offerOptions.offerToReceiveAudio;\n }\n const audioTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'audio');\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\n if (audioTransceiver.direction === 'sendrecv') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('sendonly');\n } else {\n audioTransceiver.direction = 'sendonly';\n }\n } else if (audioTransceiver.direction === 'recvonly') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('inactive');\n } else {\n audioTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveAudio === true &&\n !audioTransceiver) {\n this.addTransceiver('audio', {direction: 'recvonly'});\n }\n\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveVideo =\n !!offerOptions.offerToReceiveVideo;\n }\n const videoTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'video');\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\n if (videoTransceiver.direction === 'sendrecv') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('sendonly');\n } else {\n videoTransceiver.direction = 'sendonly';\n }\n } else if (videoTransceiver.direction === 'recvonly') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('inactive');\n } else {\n videoTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveVideo === true &&\n !videoTransceiver) {\n this.addTransceiver('video', {direction: 'recvonly'});\n }\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimAudioContext(window) {\n if (typeof window !== 'object' || window.AudioContext) {\n return;\n }\n window.AudioContext = window.webkitAudioContext;\n}\n\n","/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nconst SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substring(2, 12);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(line => line.trim());\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n const parts = blob.split('\\nm=');\n return parts.map((part, index) => (index > 0 ?\n 'm=' + part : part).trim() + '\\r\\n');\n};\n\n// Returns the session description.\nSDPUtils.getDescription = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// Returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0);\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\n// Input can be prefixed with a=.\nSDPUtils.parseCandidate = function(line) {\n let parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n const candidate = {\n foundation: parts[0],\n component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7],\n };\n\n for (let i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compatibility.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag. Don't overwrite.\n if (candidate[parts[i]] === undefined) {\n candidate[parts[i]] = parts[i + 1];\n }\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\n// This does not include the a= prefix!\nSDPUtils.writeCandidate = function(candidate) {\n const sdp = [];\n sdp.push(candidate.foundation);\n\n const component = candidate.component;\n if (component === 'rtp') {\n sdp.push(1);\n } else if (component === 'rtcp') {\n sdp.push(2);\n } else {\n sdp.push(component);\n }\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n const type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// Sample input:\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substring(14).split(' ');\n};\n\n// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n let parts = line.substring(9).split(' ');\n const parsed = {\n payloadType: parseInt(parts.shift(), 10), // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generates a rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n const channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses a extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n const parts = line.substring(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1],\n attributes: parts.slice(2).join(' '),\n };\n};\n\n// Generates an extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri +\n (headerExtension.attributes ? ' ' + headerExtension.attributes : '') +\n '\\r\\n';\n};\n\n// Parses a fmtp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n const parsed = {};\n let kv;\n const parts = line.substring(line.indexOf(' ') + 1).split(';');\n for (let j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n let line = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n const params = [];\n Object.keys(codec.parameters).forEach(param => {\n if (codec.parameters[param] !== undefined) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n const parts = line.substring(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' '),\n };\n};\n\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n let lines = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(fb => {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses a RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n const sp = line.indexOf(' ');\n const parts = {\n ssrc: parseInt(line.substring(7, sp), 10),\n };\n const colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substring(sp + 1, colon);\n parts.value = line.substring(colon + 1);\n } else {\n parts.attribute = line.substring(sp + 1);\n }\n return parts;\n};\n\n// Parse a ssrc-group line (see RFC 5576). Sample input:\n// a=ssrc-group:semantics 12 34\nSDPUtils.parseSsrcGroup = function(line) {\n const parts = line.substring(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(ssrc => parseInt(ssrc, 10)),\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// Returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substring(6);\n }\n};\n\n// Parses a fingerprint line for DTLS-SRTP.\nSDPUtils.parseFingerprint = function(line) {\n const parts = line.substring(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572.\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint),\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n let sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(fp => {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n const parts = line.substring(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n const parts = keyParams.substring(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES parameters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substring(12),\n password: pwd.substring(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n if (params.iceLite) {\n sdp += 'a=ice-lite\\r\\n';\n }\n return sdp;\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n const description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: [],\n };\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n description.profile = mline[2];\n for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n const pt = mline[i];\n const rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n const codec = SDPUtils.parseRtpMap(rtpmapline);\n const fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n const wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.forEach(codec => {\n wildcardRtcpFb.forEach(fb=> {\n const duplicate = codec.rtcpFeedback.find(existingFeedback => {\n return existingFeedback.type === fb.type &&\n existingFeedback.parameter === fb.parameter;\n });\n if (!duplicate) {\n codec.rtcpFeedback.push(fb);\n }\n });\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n let sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' ';\n sdp += caps.codecs.map(codec => {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(codec => {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n let maxptime = 0;\n caps.codecs.forEach(codec => {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(extension => {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n const encodingParameters = [];\n const description = SDPUtils.parseRtpParameters(mediaSection);\n const hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(parts => parts.attribute === 'cname');\n const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n let secondarySsrc;\n\n const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(line => {\n const parts = line.substring(17).split(' ');\n return parts.map(part => parseInt(part, 10));\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(codec => {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n let encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red',\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc,\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substring(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(params => {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n const rtcpParameters = {};\n\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(obj => obj.attribute === 'cname')[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\nSDPUtils.writeRtcpParameters = function(rtcpParameters) {\n let sdp = '';\n if (rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n if (rtcpParameters.mux) {\n sdp += 'a=rtcp-mux\\r\\n';\n }\n if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) {\n sdp += 'a=ssrc:' + rtcpParameters.ssrc +\n ' cname:' + rtcpParameters.cname + '\\r\\n';\n }\n return sdp;\n};\n\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n let parts;\n const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substring(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(msidParts => msidParts.attribute === 'msid');\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n const mline = SDPUtils.parseMLine(mediaSection);\n const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n let maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substring(12), 10),\n protocol: mline.fmt,\n maxMessageSize,\n };\n }\n const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n const parts = sctpMapLines[0]\n .substring(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize,\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n let output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n',\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n',\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 22);\n};\n\n// Write boiler plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n let sessionId;\n const version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n const user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n const lines = SDPUtils.splitLines(mediaSection);\n for (let i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substring(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n return mline[0].substring(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const parts = lines[0].substring(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' '),\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n const parts = line.substring(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5],\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n const lines = SDPUtils.splitLines(blob);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport SDPUtils from 'sdp';\nimport * as utils from './utils';\n\nexport function shimRTCIceCandidate(window) {\n // foundation is arbitrarily chosen as an indicator for full support for\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\n if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in\n window.RTCIceCandidate.prototype)) {\n return;\n }\n\n const NativeRTCIceCandidate = window.RTCIceCandidate;\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n // Remove the a= which shouldn't be part of the candidate string.\n if (typeof args === 'object' && args.candidate &&\n args.candidate.indexOf('a=') === 0) {\n args = JSON.parse(JSON.stringify(args));\n args.candidate = args.candidate.substring(2);\n }\n\n if (args.candidate && args.candidate.length) {\n // Augment the native candidate with the parsed fields.\n const nativeCandidate = new NativeRTCIceCandidate(args);\n const parsedCandidate = SDPUtils.parseCandidate(args.candidate);\n for (const key in parsedCandidate) {\n if (!(key in nativeCandidate)) {\n Object.defineProperty(nativeCandidate, key,\n {value: parsedCandidate[key]});\n }\n }\n\n // Override serializer to not serialize the extra attributes.\n nativeCandidate.toJSON = function toJSON() {\n return {\n candidate: nativeCandidate.candidate,\n sdpMid: nativeCandidate.sdpMid,\n sdpMLineIndex: nativeCandidate.sdpMLineIndex,\n usernameFragment: nativeCandidate.usernameFragment,\n };\n };\n return nativeCandidate;\n }\n return new NativeRTCIceCandidate(args);\n };\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;\n\n // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n utils.wrapPeerConnectionEvent(window, 'icecandidate', e => {\n if (e.candidate) {\n Object.defineProperty(e, 'candidate', {\n value: new window.RTCIceCandidate(e.candidate),\n writable: 'false'\n });\n }\n return e;\n });\n}\n\nexport function shimRTCIceCandidateRelayProtocol(window) {\n if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'relayProtocol' in\n window.RTCIceCandidate.prototype)) {\n return;\n }\n\n // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n utils.wrapPeerConnectionEvent(window, 'icecandidate', e => {\n if (e.candidate) {\n const parsedCandidate = SDPUtils.parseCandidate(e.candidate.candidate);\n if (parsedCandidate.type === 'relay') {\n // This is a libwebrtc-specific mapping of local type preference\n // to relayProtocol.\n e.candidate.relayProtocol = {\n 0: 'tls',\n 1: 'tcp',\n 2: 'udp',\n }[parsedCandidate.priority >> 24];\n }\n }\n return e;\n });\n}\n\nexport function shimMaxMessageSize(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n }\n });\n }\n\n const sctpInDescription = function(description) {\n if (!description || !description.sdp) {\n return false;\n }\n const sections = SDPUtils.splitSections(description.sdp);\n sections.shift();\n return sections.some(mediaSection => {\n const mLine = SDPUtils.parseMLine(mediaSection);\n return mLine && mLine.kind === 'application'\n && mLine.protocol.indexOf('SCTP') !== -1;\n });\n };\n\n const getRemoteFirefoxVersion = function(description) {\n // TODO: Is there a better solution for detecting Firefox?\n const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\n if (match === null || match.length < 2) {\n return -1;\n }\n const version = parseInt(match[1], 10);\n // Test for NaN (yes, this is ugly)\n return version !== version ? -1 : version;\n };\n\n const getCanSendMaxMessageSize = function(remoteIsFirefox) {\n // Every implementation we know can send at least 64 KiB.\n // Note: Although Chrome is technically able to send up to 256 KiB, the\n // data does not reach the other peer reliably.\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\n let canSendMaxMessageSize = 65536;\n if (browserDetails.browser === 'firefox') {\n if (browserDetails.version < 57) {\n if (remoteIsFirefox === -1) {\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\n // fragmentation.\n canSendMaxMessageSize = 16384;\n } else {\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\n // messages. Thus, supporting ~2 GiB when sending.\n canSendMaxMessageSize = 2147483637;\n }\n } else if (browserDetails.version < 60) {\n // Currently, all FF >= 57 will reset the remote maximum message size\n // to the default value when a data channel is created at a later\n // stage. :(\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n canSendMaxMessageSize =\n browserDetails.version === 57 ? 65535 : 65536;\n } else {\n // FF >= 60 supports sending ~2 GiB\n canSendMaxMessageSize = 2147483637;\n }\n }\n return canSendMaxMessageSize;\n };\n\n const getMaxMessageSize = function(description, remoteIsFirefox) {\n // Note: 65536 bytes is the default value from the SDP spec. Also,\n // every implementation we know supports receiving 65536 bytes.\n let maxMessageSize = 65536;\n\n // FF 57 has a slightly incorrect default remote max message size, so\n // we need to adjust it here to avoid a failure when sending.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\n if (browserDetails.browser === 'firefox'\n && browserDetails.version === 57) {\n maxMessageSize = 65535;\n }\n\n const match = SDPUtils.matchPrefix(description.sdp,\n 'a=max-message-size:');\n if (match.length > 0) {\n maxMessageSize = parseInt(match[0].substring(19), 10);\n } else if (browserDetails.browser === 'firefox' &&\n remoteIsFirefox !== -1) {\n // If the maximum message size is not present in the remote SDP and\n // both local and remote are Firefox, the remote peer can receive\n // ~2 GiB.\n maxMessageSize = 2147483637;\n }\n return maxMessageSize;\n };\n\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n this._sctp = null;\n // Chrome decided to not expose .sctp in plan-b mode.\n // As usual, adapter.js has to do an 'ugly worakaround'\n // to cover up the mess.\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) {\n const {sdpSemantics} = this.getConfiguration();\n if (sdpSemantics === 'plan-b') {\n Object.defineProperty(this, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (sctpInDescription(arguments[0])) {\n // Check if the remote is FF.\n const isFirefox = getRemoteFirefoxVersion(arguments[0]);\n\n // Get the maximum message size the local peer is capable of sending\n const canSendMMS = getCanSendMaxMessageSize(isFirefox);\n\n // Get the maximum message size of the remote peer.\n const remoteMMS = getMaxMessageSize(arguments[0], isFirefox);\n\n // Determine final maximum message size\n let maxMessageSize;\n if (canSendMMS === 0 && remoteMMS === 0) {\n maxMessageSize = Number.POSITIVE_INFINITY;\n } else if (canSendMMS === 0 || remoteMMS === 0) {\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\n } else {\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\n }\n\n // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\n // attribute.\n const sctp = {};\n Object.defineProperty(sctp, 'maxMessageSize', {\n get() {\n return maxMessageSize;\n }\n });\n this._sctp = sctp;\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n}\n\nexport function shimSendThrowTypeError(window) {\n if (!(window.RTCPeerConnection &&\n 'createDataChannel' in window.RTCPeerConnection.prototype)) {\n return;\n }\n\n // Note: Although Firefox >= 57 has a native implementation, the maximum\n // message size can be reset for all data channels at a later stage.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n\n function wrapDcSend(dc, pc) {\n const origDataChannelSend = dc.send;\n dc.send = function send() {\n const data = arguments[0];\n const length = data.length || data.size || data.byteLength;\n if (dc.readyState === 'open' &&\n pc.sctp && length > pc.sctp.maxMessageSize) {\n throw new TypeError('Message too large (can send a maximum of ' +\n pc.sctp.maxMessageSize + ' bytes)');\n }\n return origDataChannelSend.apply(dc, arguments);\n };\n }\n const origCreateDataChannel =\n window.RTCPeerConnection.prototype.createDataChannel;\n window.RTCPeerConnection.prototype.createDataChannel =\n function createDataChannel() {\n const dataChannel = origCreateDataChannel.apply(this, arguments);\n wrapDcSend(dataChannel, this);\n return dataChannel;\n };\n utils.wrapPeerConnectionEvent(window, 'datachannel', e => {\n wrapDcSend(e.channel, e.target);\n return e;\n });\n}\n\n\n/* shims RTCConnectionState by pretending it is the same as iceConnectionState.\n * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12\n * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect\n * since DTLS failures would be hidden. See\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827\n * for the Firefox tracking bug.\n */\nexport function shimConnectionState(window) {\n if (!window.RTCPeerConnection ||\n 'connectionState' in window.RTCPeerConnection.prototype) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n Object.defineProperty(proto, 'connectionState', {\n get() {\n return {\n completed: 'connected',\n checking: 'connecting'\n }[this.iceConnectionState] || this.iceConnectionState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(proto, 'onconnectionstatechange', {\n get() {\n return this._onconnectionstatechange || null;\n },\n set(cb) {\n if (this._onconnectionstatechange) {\n this.removeEventListener('connectionstatechange',\n this._onconnectionstatechange);\n delete this._onconnectionstatechange;\n }\n if (cb) {\n this.addEventListener('connectionstatechange',\n this._onconnectionstatechange = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n\n ['setLocalDescription', 'setRemoteDescription'].forEach((method) => {\n const origMethod = proto[method];\n proto[method] = function() {\n if (!this._connectionstatechangepoly) {\n this._connectionstatechangepoly = e => {\n const pc = e.target;\n if (pc._lastConnectionState !== pc.connectionState) {\n pc._lastConnectionState = pc.connectionState;\n const newEvent = new Event('connectionstatechange', e);\n pc.dispatchEvent(newEvent);\n }\n return e;\n };\n this.addEventListener('iceconnectionstatechange',\n this._connectionstatechangepoly);\n }\n return origMethod.apply(this, arguments);\n };\n });\n}\n\nexport function removeExtmapAllowMixed(window, browserDetails) {\n /* remove a=extmap-allow-mixed for webrtc.org < M71 */\n if (!window.RTCPeerConnection) {\n return;\n }\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) {\n return;\n }\n if (browserDetails.browser === 'safari' && browserDetails.version >= 605) {\n return;\n }\n const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription(desc) {\n if (desc && desc.sdp && desc.sdp.indexOf('\\na=extmap-allow-mixed') !== -1) {\n const sdp = desc.sdp.split('\\n').filter((line) => {\n return line.trim() !== 'a=extmap-allow-mixed';\n }).join('\\n');\n // Safari enforces read-only-ness of RTCSessionDescription fields.\n if (window.RTCSessionDescription &&\n desc instanceof window.RTCSessionDescription) {\n arguments[0] = new window.RTCSessionDescription({\n type: desc.type,\n sdp,\n });\n } else {\n desc.sdp = sdp;\n }\n }\n return nativeSRD.apply(this, arguments);\n };\n}\n\nexport function shimAddIceCandidateNullOrEmpty(window, browserDetails) {\n // Support for addIceCandidate(null or undefined)\n // as well as addIceCandidate({candidate: \"\", ...})\n // https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n // Note: must be called before other polyfills which change the signature.\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeAddIceCandidate =\n window.RTCPeerConnection.prototype.addIceCandidate;\n if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.addIceCandidate =\n function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions.\n // Native support for ignoring exists for Chrome M77+.\n // Safari ignores as well, exact version unknown but works in the same\n // version that also ignores addIceCandidate(null).\n if (((browserDetails.browser === 'chrome' && browserDetails.version < 78)\n || (browserDetails.browser === 'firefox'\n && browserDetails.version < 68)\n || (browserDetails.browser === 'safari'))\n && arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n}\n\n// Note: Make sure to call this ahead of APIs that modify\n// setLocalDescription.length\nexport function shimParameterlessSetLocalDescription(window, browserDetails) {\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n let desc = arguments[0] || {};\n if (typeof desc !== 'object' || (desc.type && desc.sdp)) {\n return nativeSetLocalDescription.apply(this, arguments);\n }\n // The remaining steps should technically happen when SLD comes off the\n // RTCPeerConnection's operations chain (not ahead of going on it), but\n // this is too difficult to shim. Instead, this shim only covers the\n // common case where the operations chain is empty. This is imperfect, but\n // should cover many cases. Rationale: Even if we can't reduce the glare\n // window to zero on imperfect implementations, there's value in tapping\n // into the perfect negotiation pattern that several browsers support.\n desc = {type: desc.type, sdp: desc.sdp};\n if (!desc.type) {\n switch (this.signalingState) {\n case 'stable':\n case 'have-local-offer':\n case 'have-remote-pranswer':\n desc.type = 'offer';\n break;\n default:\n desc.type = 'answer';\n break;\n }\n }\n if (desc.sdp || (desc.type !== 'offer' && desc.type !== 'answer')) {\n return nativeSetLocalDescription.apply(this, [desc]);\n }\n const func = desc.type === 'offer' ? this.createOffer : this.createAnswer;\n return func.apply(this)\n .then(d => nativeSetLocalDescription.apply(this, [d]));\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\nimport * as utils from './utils';\n\n// Browser shims.\nimport * as chromeShim from './chrome/chrome_shim';\nimport * as firefoxShim from './firefox/firefox_shim';\nimport * as safariShim from './safari/safari_shim';\nimport * as commonShim from './common_shim';\nimport * as sdp from 'sdp';\n\n// Shimming starts here.\nexport function adapterFactory({window} = {}, options = {\n shimChrome: true,\n shimFirefox: true,\n shimSafari: true,\n}) {\n // Utils.\n const logging = utils.log;\n const browserDetails = utils.detectBrowser(window);\n\n const adapter = {\n browserDetails,\n commonShim,\n extractVersion: utils.extractVersion,\n disableLog: utils.disableLog,\n disableWarnings: utils.disableWarnings,\n // Expose sdp as a convenience. For production apps include directly.\n sdp,\n };\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection ||\n !options.shimChrome) {\n logging('Chrome shim is not included in this adapter release.');\n return adapter;\n }\n if (browserDetails.version === null) {\n logging('Chrome shim can not determine version, not shimming.');\n return adapter;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = chromeShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n chromeShim.shimGetUserMedia(window, browserDetails);\n chromeShim.shimMediaStream(window, browserDetails);\n chromeShim.shimPeerConnection(window, browserDetails);\n chromeShim.shimOnTrack(window, browserDetails);\n chromeShim.shimAddTrackRemoveTrack(window, browserDetails);\n chromeShim.shimGetSendersWithDtmf(window, browserDetails);\n chromeShim.shimSenderReceiverGetStats(window, browserDetails);\n chromeShim.fixNegotiationNeeded(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection ||\n !options.shimFirefox) {\n logging('Firefox shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = firefoxShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n firefoxShim.shimGetUserMedia(window, browserDetails);\n firefoxShim.shimPeerConnection(window, browserDetails);\n firefoxShim.shimOnTrack(window, browserDetails);\n firefoxShim.shimRemoveStream(window, browserDetails);\n firefoxShim.shimSenderGetStats(window, browserDetails);\n firefoxShim.shimReceiverGetStats(window, browserDetails);\n firefoxShim.shimRTCDataChannel(window, browserDetails);\n firefoxShim.shimAddTransceiver(window, browserDetails);\n firefoxShim.shimGetParameters(window, browserDetails);\n firefoxShim.shimCreateOffer(window, browserDetails);\n firefoxShim.shimCreateAnswer(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'safari':\n if (!safariShim || !options.shimSafari) {\n logging('Safari shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = safariShim;\n\n // Must be called before shimCallbackAPI.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n commonShim.shimParameterlessSetLocalDescription(window, browserDetails);\n\n safariShim.shimRTCIceServerUrls(window, browserDetails);\n safariShim.shimCreateOfferLegacy(window, browserDetails);\n safariShim.shimCallbacksAPI(window, browserDetails);\n safariShim.shimLocalStreamsAPI(window, browserDetails);\n safariShim.shimRemoteStreamsAPI(window, browserDetails);\n safariShim.shimTrackEventTransceiver(window, browserDetails);\n safariShim.shimGetUserMedia(window, browserDetails);\n safariShim.shimAudioContext(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n default:\n logging('Unsupported browser!');\n break;\n }\n\n return adapter;\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n\n'use strict';\n\nimport {adapterFactory} from './adapter_factory.js';\n\nconst adapter =\n adapterFactory({window: typeof window === 'undefined' ? undefined : window});\nexport default adapter;\n","import type { KeyProviderOptions } from './types';\n\nexport const ENCRYPTION_ALGORITHM = 'AES-GCM';\n\n// How many consecutive frames can fail decrypting before a particular key gets marked as invalid\nexport const DECRYPTION_FAILURE_TOLERANCE = 10;\n\n// We copy the first bytes of the VP8 payload unencrypted.\n// For keyframes this is 10 bytes, for non-keyframes (delta) 3. See\n// https://tools.ietf.org/html/rfc6386#section-9.1\n// This allows the bridge to continue detecting keyframes (only one byte needed in the JVB)\n// and is also a bit easier for the VP8 decoder (i.e. it generates funny garbage pictures\n// instead of being unable to decode).\n// This is a bit for show and we might want to reduce to 1 unconditionally in the final version.\n//\n// For audio (where frame.type is not set) we do not encrypt the opus TOC byte:\n// https://tools.ietf.org/html/rfc6716#section-3.1\nexport const UNENCRYPTED_BYTES = {\n key: 10,\n delta: 3,\n audio: 1, // frame.type is not set on audio, so this is set manually\n empty: 0,\n} as const;\n\n/* We use a 12 byte bit IV. This is signalled in plain together with the\n packet. See https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt#parameters */\nexport const IV_LENGTH = 12;\n\n// flag set to indicate that e2ee has been setup for sender/receiver;\nexport const E2EE_FLAG = 'lk_e2ee';\n\nexport const SALT = 'LKFrameEncryptionKey';\n\nexport const KEY_PROVIDER_DEFAULTS: KeyProviderOptions = {\n sharedKey: false,\n ratchetSalt: SALT,\n ratchetWindowSize: 8,\n failureTolerance: DECRYPTION_FAILURE_TOLERANCE,\n keyringSize: 16,\n} as const;\n\nexport const MAX_SIF_COUNT = 100;\nexport const MAX_SIF_DURATION = 2000;\n","import type Participant from '../room/participant/Participant';\nimport type { CryptorError } from './errors';\nimport type { KeyInfo } from './types';\n\nexport enum KeyProviderEvent {\n SetKey = 'setKey',\n RatchetRequest = 'ratchetRequest',\n KeyRatcheted = 'keyRatcheted',\n}\n\nexport type KeyProviderCallbacks = {\n [KeyProviderEvent.SetKey]: (keyInfo: KeyInfo) => void;\n [KeyProviderEvent.RatchetRequest]: (participantIdentity?: string, keyIndex?: number) => void;\n [KeyProviderEvent.KeyRatcheted]: (material: CryptoKey, keyIndex?: number) => void;\n};\n\nexport enum KeyHandlerEvent {\n KeyRatcheted = 'keyRatcheted',\n}\n\nexport type ParticipantKeyHandlerCallbacks = {\n [KeyHandlerEvent.KeyRatcheted]: (\n material: CryptoKey,\n participantIdentity: string,\n keyIndex?: number,\n ) => void;\n};\n\nexport enum EncryptionEvent {\n ParticipantEncryptionStatusChanged = 'participantEncryptionStatusChanged',\n EncryptionError = 'encryptionError',\n}\n\nexport type E2EEManagerCallbacks = {\n [EncryptionEvent.ParticipantEncryptionStatusChanged]: (\n enabled: boolean,\n participant: Participant,\n ) => void;\n [EncryptionEvent.EncryptionError]: (error: Error) => void;\n};\n\nexport type CryptorCallbacks = {\n [CryptorEvent.Error]: (error: CryptorError) => void;\n};\n\nexport enum CryptorEvent {\n Error = 'cryptorError',\n}\n","import { ENCRYPTION_ALGORITHM } from './constants';\n\nexport function isE2EESupported() {\n return isInsertableStreamSupported() || isScriptTransformSupported();\n}\n\nexport function isScriptTransformSupported() {\n // @ts-ignore\n return typeof window.RTCRtpScriptTransform !== 'undefined';\n}\n\nexport function isInsertableStreamSupported() {\n return (\n typeof window.RTCRtpSender !== 'undefined' &&\n // @ts-ignore\n typeof window.RTCRtpSender.prototype.createEncodedStreams !== 'undefined'\n );\n}\n\nexport function isVideoFrame(\n frame: RTCEncodedAudioFrame | RTCEncodedVideoFrame,\n): frame is RTCEncodedVideoFrame {\n return 'type' in frame;\n}\n\nexport async function importKey(\n keyBytes: Uint8Array | ArrayBuffer,\n algorithm: string | { name: string } = { name: ENCRYPTION_ALGORITHM },\n usage: 'derive' | 'encrypt' = 'encrypt',\n) {\n // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey\n return crypto.subtle.importKey(\n 'raw',\n keyBytes,\n algorithm,\n false,\n usage === 'derive' ? ['deriveBits', 'deriveKey'] : ['encrypt', 'decrypt'],\n );\n}\n\nexport async function createKeyMaterialFromString(password: string) {\n let enc = new TextEncoder();\n\n const keyMaterial = await crypto.subtle.importKey(\n 'raw',\n enc.encode(password),\n {\n name: 'PBKDF2',\n },\n false,\n ['deriveBits', 'deriveKey'],\n );\n\n return keyMaterial;\n}\n\nexport async function createKeyMaterialFromBuffer(cryptoBuffer: ArrayBuffer) {\n const keyMaterial = await crypto.subtle.importKey('raw', cryptoBuffer, 'HKDF', false, [\n 'deriveBits',\n 'deriveKey',\n ]);\n\n return keyMaterial;\n}\n\nfunction getAlgoOptions(algorithmName: string, salt: string) {\n const textEncoder = new TextEncoder();\n const encodedSalt = textEncoder.encode(salt);\n switch (algorithmName) {\n case 'HKDF':\n return {\n name: 'HKDF',\n salt: encodedSalt,\n hash: 'SHA-256',\n info: new ArrayBuffer(128),\n };\n case 'PBKDF2': {\n return {\n name: 'PBKDF2',\n salt: encodedSalt,\n hash: 'SHA-256',\n iterations: 100000,\n };\n }\n default:\n throw new Error(`algorithm ${algorithmName} is currently unsupported`);\n }\n}\n\n/**\n * Derives a set of keys from the master key.\n * See https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.1\n */\nexport async function deriveKeys(material: CryptoKey, salt: string) {\n const algorithmOptions = getAlgoOptions(material.algorithm.name, salt);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey#HKDF\n // https://developer.mozilla.org/en-US/docs/Web/API/HkdfParams\n const encryptionKey = await crypto.subtle.deriveKey(\n algorithmOptions,\n material,\n {\n name: ENCRYPTION_ALGORITHM,\n length: 128,\n },\n false,\n ['encrypt', 'decrypt'],\n );\n\n return { material, encryptionKey };\n}\n\nexport function createE2EEKey(): Uint8Array {\n return window.crypto.getRandomValues(new Uint8Array(32));\n}\n\n/**\n * Ratchets a key. See\n * https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.5.1\n */\nexport async function ratchet(material: CryptoKey, salt: string): Promise {\n const algorithmOptions = getAlgoOptions(material.algorithm.name, salt);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveBits\n return crypto.subtle.deriveBits(algorithmOptions, material, 256);\n}\n\nexport function needsRbspUnescaping(frameData: Uint8Array) {\n for (var i = 0; i < frameData.length - 3; i++) {\n if (frameData[i] == 0 && frameData[i + 1] == 0 && frameData[i + 2] == 3) return true;\n }\n return false;\n}\n\nexport function parseRbsp(stream: Uint8Array): Uint8Array {\n const dataOut: number[] = [];\n var length = stream.length;\n for (var i = 0; i < stream.length; ) {\n // Be careful about over/underflow here. byte_length_ - 3 can underflow, and\n // i + 3 can overflow, but byte_length_ - i can't, because i < byte_length_\n // above, and that expression will produce the number of bytes left in\n // the stream including the byte at i.\n if (length - i >= 3 && !stream[i] && !stream[i + 1] && stream[i + 2] == 3) {\n // Two rbsp bytes.\n dataOut.push(stream[i++]);\n dataOut.push(stream[i++]);\n // Skip the emulation byte.\n i++;\n } else {\n // Single rbsp byte.\n dataOut.push(stream[i++]);\n }\n }\n return new Uint8Array(dataOut);\n}\n\nconst kZerosInStartSequence = 2;\nconst kEmulationByte = 3;\n\nexport function writeRbsp(data_in: Uint8Array): Uint8Array {\n const dataOut: number[] = [];\n var numConsecutiveZeros = 0;\n for (var i = 0; i < data_in.length; ++i) {\n var byte = data_in[i];\n if (byte <= kEmulationByte && numConsecutiveZeros >= kZerosInStartSequence) {\n // Need to escape.\n dataOut.push(kEmulationByte);\n numConsecutiveZeros = 0;\n }\n dataOut.push(byte);\n if (byte == 0) {\n ++numConsecutiveZeros;\n } else {\n numConsecutiveZeros = 0;\n }\n }\n return new Uint8Array(dataOut);\n}\n","import { EventEmitter } from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\nimport log from '../logger';\nimport { KEY_PROVIDER_DEFAULTS } from './constants';\nimport { type KeyProviderCallbacks, KeyProviderEvent } from './events';\nimport type { KeyInfo, KeyProviderOptions } from './types';\nimport { createKeyMaterialFromBuffer, createKeyMaterialFromString } from './utils';\n\n/**\n * @experimental\n */\nexport class BaseKeyProvider extends (EventEmitter as new () => TypedEventEmitter) {\n private keyInfoMap: Map;\n\n private readonly options: KeyProviderOptions;\n\n constructor(options: Partial = {}) {\n super();\n this.keyInfoMap = new Map();\n this.options = { ...KEY_PROVIDER_DEFAULTS, ...options };\n this.on(KeyProviderEvent.KeyRatcheted, this.onKeyRatcheted);\n }\n\n /**\n * callback to invoke once a key has been set for a participant\n * @param key\n * @param participantIdentity\n * @param keyIndex\n */\n protected onSetEncryptionKey(key: CryptoKey, participantIdentity?: string, keyIndex?: number) {\n const keyInfo: KeyInfo = { key, participantIdentity, keyIndex };\n if (!this.options.sharedKey && !participantIdentity) {\n throw new Error(\n 'participant identity needs to be passed for encryption key if sharedKey option is false',\n );\n }\n this.keyInfoMap.set(`${participantIdentity ?? 'shared'}-${keyIndex ?? 0}`, keyInfo);\n this.emit(KeyProviderEvent.SetKey, keyInfo);\n }\n\n /**\n * callback being invoked after a ratchet request has been performed on a participant\n * that surfaces the new key material.\n * @param material\n * @param keyIndex\n */\n protected onKeyRatcheted = (material: CryptoKey, keyIndex?: number) => {\n log.debug('key ratcheted event received', { material, keyIndex });\n };\n\n getKeys() {\n return Array.from(this.keyInfoMap.values());\n }\n\n getOptions() {\n return this.options;\n }\n\n ratchetKey(participantIdentity?: string, keyIndex?: number) {\n this.emit(KeyProviderEvent.RatchetRequest, participantIdentity, keyIndex);\n }\n}\n\n/**\n * A basic KeyProvider implementation intended for a single shared\n * passphrase between all participants\n * @experimental\n */\nexport class ExternalE2EEKeyProvider extends BaseKeyProvider {\n ratchetInterval: number | undefined;\n\n constructor(options: Partial> = {}) {\n const opts: Partial = {\n ...options,\n sharedKey: true,\n // for a shared key provider failing to decrypt for a specific participant\n // should not mark the key as invalid, so we accept wrong keys forever\n // and won't try to auto-ratchet\n ratchetWindowSize: 0,\n failureTolerance: -1,\n };\n super(opts);\n }\n\n /**\n * Accepts a passphrase that's used to create the crypto keys.\n * When passing in a string, PBKDF2 is used.\n * When passing in an Array buffer of cryptographically random numbers, HKDF is being used. (recommended)\n * @param key\n */\n async setKey(key: string | ArrayBuffer) {\n const derivedKey =\n typeof key === 'string'\n ? await createKeyMaterialFromString(key)\n : await createKeyMaterialFromBuffer(key);\n this.onSetEncryptionKey(derivedKey);\n }\n}\n","import { DisconnectReason, RequestResponse_Reason } from '@livekit/protocol';\n\nexport class LivekitError extends Error {\n code: number;\n\n constructor(code: number, message?: string) {\n super(message || 'an error has occured');\n this.code = code;\n }\n}\n\nexport const enum ConnectionErrorReason {\n NotAllowed,\n ServerUnreachable,\n InternalError,\n Cancelled,\n LeaveRequest,\n}\n\nexport class ConnectionError extends LivekitError {\n status?: number;\n\n context?: unknown | DisconnectReason;\n\n reason: ConnectionErrorReason;\n\n constructor(\n message: string,\n reason: ConnectionErrorReason,\n status?: number,\n context?: unknown | DisconnectReason,\n ) {\n super(1, message);\n this.status = status;\n this.reason = reason;\n this.context = context;\n }\n}\n\nexport class DeviceUnsupportedError extends LivekitError {\n constructor(message?: string) {\n super(21, message ?? 'device is unsupported');\n }\n}\n\nexport class TrackInvalidError extends LivekitError {\n constructor(message?: string) {\n super(20, message ?? 'track is invalid');\n }\n}\n\nexport class UnsupportedServer extends LivekitError {\n constructor(message?: string) {\n super(10, message ?? 'unsupported server');\n }\n}\n\nexport class UnexpectedConnectionState extends LivekitError {\n constructor(message?: string) {\n super(12, message ?? 'unexpected connection state');\n }\n}\n\nexport class NegotiationError extends LivekitError {\n constructor(message?: string) {\n super(13, message ?? 'unable to negotiate');\n }\n}\n\nexport class PublishDataError extends LivekitError {\n constructor(message?: string) {\n super(13, message ?? 'unable to publish data');\n }\n}\n\nexport type RequestErrorReason =\n | Exclude\n | 'TimeoutError';\n\nexport class SignalRequestError extends LivekitError {\n reason: RequestErrorReason;\n\n constructor(message: string, reason: RequestErrorReason) {\n super(15, message);\n this.reason = reason;\n }\n}\n\nexport enum MediaDeviceFailure {\n // user rejected permissions\n PermissionDenied = 'PermissionDenied',\n // device is not available\n NotFound = 'NotFound',\n // device is in use. On Windows, only a single tab may get access to a device at a time.\n DeviceInUse = 'DeviceInUse',\n Other = 'Other',\n}\n\nexport namespace MediaDeviceFailure {\n export function getFailure(error: any): MediaDeviceFailure | undefined {\n if (error && 'name' in error) {\n if (error.name === 'NotFoundError' || error.name === 'DevicesNotFoundError') {\n return MediaDeviceFailure.NotFound;\n }\n if (error.name === 'NotAllowedError' || error.name === 'PermissionDeniedError') {\n return MediaDeviceFailure.PermissionDenied;\n }\n if (error.name === 'NotReadableError' || error.name === 'TrackStartError') {\n return MediaDeviceFailure.DeviceInUse;\n }\n return MediaDeviceFailure.Other;\n }\n }\n}\n","import { LivekitError } from '../room/errors';\n\nexport enum CryptorErrorReason {\n InvalidKey = 0,\n MissingKey = 1,\n InternalError = 2,\n}\n\nexport class CryptorError extends LivekitError {\n reason: CryptorErrorReason;\n\n participantIdentity?: string;\n\n constructor(\n message?: string,\n reason: CryptorErrorReason = CryptorErrorReason.InternalError,\n participantIdentity?: string,\n ) {\n super(40, message);\n this.reason = reason;\n this.participantIdentity = participantIdentity;\n }\n}\n","/**\n * Events are the primary way LiveKit notifies your application of changes.\n *\n * The following are events emitted by [[Room]], listen to room events like\n *\n * ```typescript\n * room.on(RoomEvent.TrackPublished, (track, publication, participant) => {})\n * ```\n */\n\nexport enum RoomEvent {\n /**\n * When the connection to the server has been established\n */\n Connected = 'connected',\n\n /**\n * When the connection to the server has been interrupted and it's attempting\n * to reconnect.\n */\n Reconnecting = 'reconnecting',\n\n /**\n * When the signal connection to the server has been interrupted. This isn't noticeable to users most of the time.\n * It will resolve with a `RoomEvent.Reconnected` once the signal connection has been re-established.\n * If media fails additionally it an additional `RoomEvent.Reconnecting` will be emitted.\n */\n SignalReconnecting = 'signalReconnecting',\n\n /**\n * Fires when a reconnection has been successful.\n */\n Reconnected = 'reconnected',\n\n /**\n * When disconnected from room. This fires when room.disconnect() is called or\n * when an unrecoverable connection issue had occured.\n *\n * DisconnectReason can be used to determine why the participant was disconnected. Notable reasons are\n * - DUPLICATE_IDENTITY: another client with the same identity has joined the room\n * - PARTICIPANT_REMOVED: participant was removed by RemoveParticipant API\n * - ROOM_DELETED: the room has ended via DeleteRoom API\n *\n * args: ([[DisconnectReason]])\n */\n Disconnected = 'disconnected',\n\n /**\n * Whenever the connection state of the room changes\n *\n * args: ([[ConnectionState]])\n */\n ConnectionStateChanged = 'connectionStateChanged',\n\n /**\n * When input or output devices on the machine have changed.\n */\n MediaDevicesChanged = 'mediaDevicesChanged',\n\n /**\n * When a [[RemoteParticipant]] joins *after* the local\n * participant. It will not emit events for participants that are already\n * in the room\n *\n * args: ([[RemoteParticipant]])\n */\n ParticipantConnected = 'participantConnected',\n\n /**\n * When a [[RemoteParticipant]] leaves *after* the local\n * participant has joined.\n *\n * args: ([[RemoteParticipant]])\n */\n ParticipantDisconnected = 'participantDisconnected',\n\n /**\n * When a new track is published to room *after* the local\n * participant has joined. It will not fire for tracks that are already published.\n *\n * A track published doesn't mean the participant has subscribed to it. It's\n * simply reflecting the state of the room.\n *\n * args: ([[RemoteTrackPublication]], [[RemoteParticipant]])\n */\n TrackPublished = 'trackPublished',\n\n /**\n * The [[LocalParticipant]] has subscribed to a new track. This event will **always**\n * fire as long as new tracks are ready for use.\n *\n * args: ([[RemoteTrack]], [[RemoteTrackPublication]], [[RemoteParticipant]])\n */\n TrackSubscribed = 'trackSubscribed',\n\n /**\n * Could not subscribe to a track\n *\n * args: (track sid, [[RemoteParticipant]])\n */\n TrackSubscriptionFailed = 'trackSubscriptionFailed',\n\n /**\n * A [[RemoteParticipant]] has unpublished a track\n *\n * args: ([[RemoteTrackPublication]], [[RemoteParticipant]])\n */\n TrackUnpublished = 'trackUnpublished',\n\n /**\n * A subscribed track is no longer available. Clients should listen to this\n * event and ensure they detach tracks.\n *\n * args: ([[Track]], [[RemoteTrackPublication]], [[RemoteParticipant]])\n */\n TrackUnsubscribed = 'trackUnsubscribed',\n\n /**\n * A track that was muted, fires on both [[RemoteParticipant]]s and [[LocalParticipant]]\n *\n * args: ([[TrackPublication]], [[Participant]])\n */\n TrackMuted = 'trackMuted',\n\n /**\n * A track that was unmuted, fires on both [[RemoteParticipant]]s and [[LocalParticipant]]\n *\n * args: ([[TrackPublication]], [[Participant]])\n */\n TrackUnmuted = 'trackUnmuted',\n\n /**\n * A local track was published successfully. This event is helpful to know\n * when to update your local UI with the newly published track.\n *\n * args: ([[LocalTrackPublication]], [[LocalParticipant]])\n */\n LocalTrackPublished = 'localTrackPublished',\n\n /**\n * A local track was unpublished. This event is helpful to know when to remove\n * the local track from your UI.\n *\n * When a user stops sharing their screen by pressing \"End\" on the browser UI,\n * this event will also fire.\n *\n * args: ([[LocalTrackPublication]], [[LocalParticipant]])\n */\n LocalTrackUnpublished = 'localTrackUnpublished',\n\n /**\n * When a local audio track is published the SDK checks whether there is complete silence\n * on that track and emits the LocalAudioSilenceDetected event in that case.\n * This allows for applications to show UI informing users that they might have to\n * reset their audio hardware or check for proper device connectivity.\n */\n LocalAudioSilenceDetected = 'localAudioSilenceDetected',\n\n /**\n * Active speakers changed. List of speakers are ordered by their audio level.\n * loudest speakers first. This will include the LocalParticipant too.\n *\n * Speaker updates are sent only to the publishing participant and their subscribers.\n *\n * args: (Array<[[Participant]]>)\n */\n ActiveSpeakersChanged = 'activeSpeakersChanged',\n\n /**\n * Participant metadata is a simple way for app-specific state to be pushed to\n * all users.\n * When RoomService.UpdateParticipantMetadata is called to change a participant's\n * state, *all* participants in the room will fire this event.\n *\n * args: (prevMetadata: string, [[Participant]])\n *\n */\n ParticipantMetadataChanged = 'participantMetadataChanged',\n\n /**\n * Participant's display name changed\n *\n * args: (name: string, [[Participant]])\n *\n */\n ParticipantNameChanged = 'participantNameChanged',\n\n /**\n * Participant attributes is an app-specific key value state to be pushed to\n * all users.\n * When a participant's attributes changed, this event will be emitted with the changed attributes and the participant\n * args: (changedAttributes: [[Record=c)return c-r}return e}var d=function(){var e=[].slice.call(arguments),n=this;return new Promise(function(i,t){var c=a&&void 0===o;if(void 0!==o&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,v=Date.now(),!a){var i=r.apply(n,e);u&&u(i),l.forEach(function(r){return(0,r.resolve)(i)}),l=[]}},f()),c){var d=r.apply(n,e);return u&&u(d),i(d)}l.push({resolve:i,reject:t})})};return d.cancel=function(r){void 0!==o&&clearTimeout(o),l.forEach(function(e){return(0,e.reject)(r)}),l=[]},d}export{r as debounce};\n//# sourceMappingURL=index.esm.js.map\n","// tiny, simplified version of https://github.com/lancedikson/bowser/blob/master/src/parser-browsers.js\n// reduced to only differentiate Chrome(ium) based browsers / Firefox / Safari\n\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i;\n\nexport type DetectableBrowser = 'Chrome' | 'Firefox' | 'Safari';\nexport type DetectableOS = 'iOS' | 'macOS';\n\nexport type BrowserDetails = {\n name: DetectableBrowser;\n version: string;\n os?: DetectableOS;\n osVersion?: string;\n};\n\nlet browserDetails: BrowserDetails | undefined;\n\n/**\n * @internal\n */\nexport function getBrowser(userAgent?: string, force = true): BrowserDetails | undefined {\n if (typeof userAgent === 'undefined' && typeof navigator === 'undefined') {\n return;\n }\n const ua = (userAgent ?? navigator.userAgent).toLowerCase();\n if (browserDetails === undefined || force) {\n const browser = browsersList.find(({ test }) => test.test(ua));\n browserDetails = browser?.describe(ua);\n }\n return browserDetails;\n}\n\nconst browsersList = [\n {\n test: /firefox|iceweasel|fxios/i,\n describe(ua: string) {\n const browser: BrowserDetails = {\n name: 'Firefox',\n version: getMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua),\n os: ua.toLowerCase().includes('fxios') ? 'iOS' : undefined,\n osVersion: getOSVersion(ua),\n };\n return browser;\n },\n },\n {\n test: /chrom|crios|crmo/i,\n describe(ua: string) {\n const browser: BrowserDetails = {\n name: 'Chrome',\n version: getMatch(/(?:chrome|chromium|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i, ua),\n os: ua.toLowerCase().includes('crios') ? 'iOS' : undefined,\n osVersion: getOSVersion(ua),\n };\n\n return browser;\n },\n },\n /* Safari */\n {\n test: /safari|applewebkit/i,\n describe(ua: string) {\n const browser: BrowserDetails = {\n name: 'Safari',\n version: getMatch(commonVersionIdentifier, ua),\n os: ua.includes('mobile/') ? 'iOS' : 'macOS',\n osVersion: getOSVersion(ua),\n };\n\n return browser;\n },\n },\n];\n\nfunction getMatch(exp: RegExp, ua: string, id = 1) {\n const match = ua.match(exp);\n return (match && match.length >= id && match[id]) || '';\n}\n\nfunction getOSVersion(ua: string) {\n return ua.includes('mac os')\n ? getMatch(/\\(.+?(\\d+_\\d+(:?_\\d+)?)/, ua, 1).replace(/_/g, '.')\n : undefined;\n}\n","/**\n * Timers that can be overridden with platform specific implementations\n * that ensure that they are fired. These should be used when it is critical\n * that the timer fires on time.\n */\nexport default class CriticalTimers {\n static setTimeout: (...args: Parameters) => ReturnType = (\n ...args: Parameters\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n ) => setTimeout(...args);\n\n static setInterval: (...args: Parameters) => ReturnType =\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n (...args: Parameters) => setInterval(...args);\n\n static clearTimeout: (\n ...args: Parameters\n ) => ReturnType = (...args: Parameters) =>\n clearTimeout(...args);\n\n static clearInterval: (\n ...args: Parameters\n ) => ReturnType = (...args: Parameters) =>\n clearInterval(...args);\n}\n","import type { Track } from './Track';\nimport type {\n AudioProcessorOptions,\n TrackProcessor,\n VideoProcessorOptions,\n} from './processor/types';\n\nexport interface TrackPublishDefaults {\n /**\n * encoding parameters for camera track\n */\n videoEncoding?: VideoEncoding;\n\n /**\n * Multi-codec Simulcast\n * VP9 and AV1 are not supported by all browser clients. When backupCodec is\n * set, when an incompatible client attempts to subscribe to the track, LiveKit\n * will automatically publish a secondary track encoded with the backup codec.\n *\n * You could customize specific encoding parameters of the backup track by\n * explicitly setting codec and encoding fields.\n *\n * Defaults to `true`\n */\n backupCodec?: true | false | { codec: BackupVideoCodec; encoding?: VideoEncoding };\n\n /**\n * encoding parameters for screen share track\n */\n screenShareEncoding?: VideoEncoding;\n\n /**\n * codec, defaults to vp8; for svc codecs, auto enable vp8\n * as backup. (TBD)\n */\n videoCodec?: VideoCodec;\n\n /**\n * which audio preset should be used for publishing (audio) tracks\n * defaults to [[AudioPresets.music]]\n */\n audioPreset?: AudioPreset;\n\n /**\n * dtx (Discontinuous Transmission of audio), enabled by default for mono tracks.\n */\n dtx?: boolean;\n\n /**\n * red (Redundant Audio Data), enabled by default for mono tracks.\n */\n red?: boolean;\n\n /**\n * publish track in stereo mode (or set to false to disable). defaults determined by capture channel count.\n */\n forceStereo?: boolean;\n\n /**\n * use simulcast, defaults to true.\n * When using simulcast, LiveKit will publish up to three versions of the stream\n * at various resolutions.\n */\n simulcast?: boolean;\n\n /**\n * scalability mode for svc codecs, defaults to 'L3T3_KEY'.\n * for svc codecs, simulcast is disabled.\n */\n scalabilityMode?: ScalabilityMode;\n\n /**\n * degradation preference\n */\n degradationPreference?: RTCDegradationPreference;\n\n /**\n * Up to two additional simulcast layers to publish in addition to the original\n * Track.\n * When left blank, it defaults to h180, h360.\n * If a SVC codec is used (VP9 or AV1), this field has no effect.\n *\n * To publish three total layers, you would specify:\n * {\n * videoEncoding: {...}, // encoding of the primary layer\n * videoSimulcastLayers: [\n * VideoPresets.h540,\n * VideoPresets.h216,\n * ],\n * }\n */\n videoSimulcastLayers?: Array;\n\n /**\n * custom video simulcast layers for screen tracks\n * Note: the layers need to be ordered from lowest to highest quality\n */\n screenShareSimulcastLayers?: Array;\n\n /**\n * For local tracks, stop the underlying MediaStreamTrack when the track is muted (or paused)\n * on some platforms, this option is necessary to disable the microphone recording indicator.\n * Note: when this is enabled, and BT devices are connected, they will transition between\n * profiles (e.g. HFP to A2DP) and there will be an audible difference in playback.\n *\n * defaults to false\n */\n stopMicTrackOnMute?: boolean;\n}\n\n/**\n * Options when publishing tracks\n */\nexport interface TrackPublishOptions extends TrackPublishDefaults {\n /**\n * set a track name\n */\n name?: string;\n\n /**\n * Source of track, camera, microphone, or screen\n */\n source?: Track.Source;\n\n /**\n * Set stream name for the track. Audio and video tracks with the same stream name\n * will be placed in the same `MediaStream` and offer better synchronization.\n * By default, camera and microphone will be placed in a stream; as would screen_share and screen_share_audio\n */\n stream?: string;\n}\n\nexport interface CreateLocalTracksOptions {\n /**\n * audio track options, true to create with defaults. false if audio shouldn't be created\n * default true\n */\n audio?: boolean | AudioCaptureOptions;\n\n /**\n * video track options, true to create with defaults. false if video shouldn't be created\n * default true\n */\n video?: boolean | VideoCaptureOptions;\n}\n\nexport interface VideoCaptureOptions {\n /**\n * A ConstrainDOMString object specifying a device ID or an array of device\n * IDs which are acceptable and/or required.\n */\n deviceId?: ConstrainDOMString;\n\n /**\n * a facing or an array of facings which are acceptable and/or required.\n */\n facingMode?: 'user' | 'environment' | 'left' | 'right';\n\n resolution?: VideoResolution;\n\n /**\n * initialize the track with a given processor\n */\n processor?: TrackProcessor;\n}\n\nexport interface ScreenShareCaptureOptions {\n /**\n * true to capture audio shared. browser support for audio capturing in\n * screenshare is limited: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#browser_compatibility\n */\n audio?: boolean | AudioCaptureOptions;\n\n /**\n * only allows for 'true' and chrome allows for additional options to be passed in\n * https://developer.chrome.com/docs/web-platform/screen-sharing-controls/#displaySurface\n */\n video?: true | { displaySurface?: 'window' | 'browser' | 'monitor' };\n\n /**\n * capture resolution, defaults to 1080 for all browsers other than Safari\n * On Safari 17, default resolution is not capped, due to a bug, specifying\n * any resolution at all would lead to a low-resolution capture.\n * https://bugs.webkit.org/show_bug.cgi?id=263015\n */\n resolution?: VideoResolution;\n\n /** a CaptureController object instance containing methods that can be used to further manipulate the capture session if included. */\n controller?: unknown; // TODO replace type with CaptureController once it lands in TypeScript\n\n /** specifies whether the browser should allow the user to select the current tab for capture */\n selfBrowserSurface?: 'include' | 'exclude';\n\n /** specifies whether the browser should display a control to allow the user to dynamically switch the shared tab during screen-sharing. */\n surfaceSwitching?: 'include' | 'exclude';\n\n /** specifies whether the browser should include the system audio among the possible audio sources offered to the user */\n systemAudio?: 'include' | 'exclude';\n\n /** specify the type of content, see: https://www.w3.org/TR/mst-content-hint/#video-content-hints */\n contentHint?: 'detail' | 'text' | 'motion';\n\n /**\n * Experimental option to control whether the audio playing in a tab will continue to be played out of a user's\n * local speakers when the tab is captured.\n */\n suppressLocalAudioPlayback?: boolean;\n\n /**\n * Experimental option to instruct the browser to offer the current tab as the most prominent capture source\n * @experimental\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab\n */\n preferCurrentTab?: boolean;\n}\n\nexport interface AudioCaptureOptions {\n /**\n * specifies whether automatic gain control is preferred and/or required\n */\n autoGainControl?: ConstrainBoolean;\n\n /**\n * the channel count or range of channel counts which are acceptable and/or required\n */\n channelCount?: ConstrainULong;\n\n /**\n * A ConstrainDOMString object specifying a device ID or an array of device\n * IDs which are acceptable and/or required.\n */\n deviceId?: ConstrainDOMString;\n\n /**\n * whether or not echo cancellation is preferred and/or required\n */\n echoCancellation?: ConstrainBoolean;\n\n /**\n * the latency or range of latencies which are acceptable and/or required.\n */\n latency?: ConstrainDouble;\n\n /**\n * whether noise suppression is preferred and/or required.\n */\n noiseSuppression?: ConstrainBoolean;\n\n /**\n * @experimental\n * a stronger version of 'noiseSuppression', browser support is not widespread yet.\n * If this is set (and supported) the value for 'noiseSuppression' will be ignored\n * @see https://w3c.github.io/mediacapture-extensions/#voiceisolation-constraint\n */\n voiceIsolation?: ConstrainBoolean;\n\n /**\n * the sample rate or range of sample rates which are acceptable and/or required.\n */\n sampleRate?: ConstrainULong;\n\n /**\n * sample size or range of sample sizes which are acceptable and/or required.\n */\n sampleSize?: ConstrainULong;\n\n /**\n * initialize the track with a given processor\n */\n processor?: TrackProcessor;\n}\n\nexport interface AudioOutputOptions {\n /**\n * deviceId to output audio\n *\n * Only supported on browsers where `setSinkId` is available\n */\n deviceId?: string;\n}\n\nexport interface VideoResolution {\n width: number;\n height: number;\n frameRate?: number;\n aspectRatio?: number;\n}\n\nexport interface VideoEncoding {\n maxBitrate: number;\n maxFramerate?: number;\n priority?: RTCPriorityType;\n}\n\nexport interface VideoPresetOptions {\n width: number;\n height: number;\n aspectRatio?: number;\n maxBitrate: number;\n maxFramerate?: number;\n priority?: RTCPriorityType;\n}\n\nexport class VideoPreset {\n encoding: VideoEncoding;\n\n width: number;\n\n height: number;\n\n aspectRatio?: number;\n\n constructor(videoPresetOptions: VideoPresetOptions);\n constructor(\n width: number,\n height: number,\n maxBitrate: number,\n maxFramerate?: number,\n priority?: RTCPriorityType,\n );\n constructor(\n widthOrOptions: number | VideoPresetOptions,\n height?: number,\n maxBitrate?: number,\n maxFramerate?: number,\n priority?: RTCPriorityType,\n ) {\n if (typeof widthOrOptions === 'object') {\n this.width = widthOrOptions.width;\n this.height = widthOrOptions.height;\n this.aspectRatio = widthOrOptions.aspectRatio;\n this.encoding = {\n maxBitrate: widthOrOptions.maxBitrate,\n maxFramerate: widthOrOptions.maxFramerate,\n priority: widthOrOptions.priority,\n };\n } else if (height !== undefined && maxBitrate !== undefined) {\n this.width = widthOrOptions;\n this.height = height;\n this.aspectRatio = widthOrOptions / height;\n this.encoding = {\n maxBitrate,\n maxFramerate,\n priority,\n };\n } else {\n throw new TypeError('Unsupported options: provide at least width, height and maxBitrate');\n }\n }\n\n get resolution(): VideoResolution {\n return {\n width: this.width,\n height: this.height,\n frameRate: this.encoding.maxFramerate,\n aspectRatio: this.aspectRatio,\n };\n }\n}\n\nexport interface AudioPreset {\n maxBitrate: number;\n priority?: RTCPriorityType;\n}\n\nconst backupCodecs = ['vp8', 'h264'] as const;\n\nexport const videoCodecs = ['vp8', 'h264', 'vp9', 'av1'] as const;\n\nexport type VideoCodec = (typeof videoCodecs)[number];\n\nexport type BackupVideoCodec = (typeof backupCodecs)[number];\n\nexport function isBackupCodec(codec: string): codec is BackupVideoCodec {\n return !!backupCodecs.find((backup) => backup === codec);\n}\n\n/**\n * scalability modes for svc.\n */\nexport type ScalabilityMode =\n | 'L1T1'\n | 'L1T2'\n | 'L1T3'\n | 'L2T1'\n | 'L2T1h'\n | 'L2T1_KEY'\n | 'L2T2'\n | 'L2T2h'\n | 'L2T2_KEY'\n | 'L2T3'\n | 'L2T3h'\n | 'L2T3_KEY'\n | 'L3T1'\n | 'L3T1h'\n | 'L3T1_KEY'\n | 'L3T2'\n | 'L3T2h'\n | 'L3T2_KEY'\n | 'L3T3'\n | 'L3T3h'\n | 'L3T3_KEY';\n\nexport namespace AudioPresets {\n export const telephone: AudioPreset = {\n maxBitrate: 12_000,\n };\n export const speech: AudioPreset = {\n maxBitrate: 24_000,\n };\n export const music: AudioPreset = {\n maxBitrate: 48_000,\n };\n export const musicStereo: AudioPreset = {\n maxBitrate: 64_000,\n };\n export const musicHighQuality: AudioPreset = {\n maxBitrate: 96_000,\n };\n export const musicHighQualityStereo: AudioPreset = {\n maxBitrate: 128_000,\n };\n}\n\n/**\n * Sane presets for video resolution/encoding\n */\nexport const VideoPresets = {\n h90: new VideoPreset(160, 90, 90_000, 20),\n h180: new VideoPreset(320, 180, 160_000, 20),\n h216: new VideoPreset(384, 216, 180_000, 20),\n h360: new VideoPreset(640, 360, 450_000, 20),\n h540: new VideoPreset(960, 540, 800_000, 25),\n h720: new VideoPreset(1280, 720, 1_700_000, 30),\n h1080: new VideoPreset(1920, 1080, 3_000_000, 30),\n h1440: new VideoPreset(2560, 1440, 5_000_000, 30),\n h2160: new VideoPreset(3840, 2160, 8_000_000, 30),\n} as const;\n\n/**\n * Four by three presets\n */\nexport const VideoPresets43 = {\n h120: new VideoPreset(160, 120, 70_000, 20),\n h180: new VideoPreset(240, 180, 125_000, 20),\n h240: new VideoPreset(320, 240, 140_000, 20),\n h360: new VideoPreset(480, 360, 330_000, 20),\n h480: new VideoPreset(640, 480, 500_000, 20),\n h540: new VideoPreset(720, 540, 600_000, 25),\n h720: new VideoPreset(960, 720, 1_300_000, 30),\n h1080: new VideoPreset(1440, 1080, 2_300_000, 30),\n h1440: new VideoPreset(1920, 1440, 3_800_000, 30),\n} as const;\n\nexport const ScreenSharePresets = {\n h360fps3: new VideoPreset(640, 360, 200_000, 3, 'medium'),\n h360fps15: new VideoPreset(640, 360, 400_000, 15, 'medium'),\n h720fps5: new VideoPreset(1280, 720, 800_000, 5, 'medium'),\n h720fps15: new VideoPreset(1280, 720, 1_500_000, 15, 'medium'),\n h720fps30: new VideoPreset(1280, 720, 2_000_000, 30, 'medium'),\n h1080fps15: new VideoPreset(1920, 1080, 2_500_000, 15, 'medium'),\n h1080fps30: new VideoPreset(1920, 1080, 5_000_000, 30, 'medium'),\n // original resolution, without resizing\n original: new VideoPreset(0, 0, 7_000_000, 30, 'medium'),\n} as const;\n","import {\n AudioTrackFeature,\n VideoQuality as ProtoQuality,\n StreamState as ProtoStreamState,\n TrackSource,\n TrackType,\n} from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\nimport type { SignalClient } from '../../api/SignalClient';\nimport log, { LoggerNames, type StructuredLogger, getLogger } from '../../logger';\nimport { TrackEvent } from '../events';\nimport type { LoggerOptions } from '../types';\nimport { isFireFox, isSafari, isWeb } from '../utils';\nimport type { TrackProcessor } from './processor/types';\nimport { getLogContextFromTrack } from './utils';\n\nconst BACKGROUND_REACTION_DELAY = 5000;\n\n// keep old audio elements when detached, we would re-use them since on iOS\n// Safari tracks which audio elements have been \"blessed\" by the user.\nconst recycledElements: Array = [];\n\nexport enum VideoQuality {\n LOW = ProtoQuality.LOW,\n MEDIUM = ProtoQuality.MEDIUM,\n HIGH = ProtoQuality.HIGH,\n}\nexport abstract class Track<\n TrackKind extends Track.Kind = Track.Kind,\n> extends (EventEmitter as new () => TypedEventEmitter) {\n readonly kind: TrackKind;\n\n attachedElements: HTMLMediaElement[] = [];\n\n isMuted: boolean = false;\n\n source: Track.Source;\n\n /**\n * sid is set after track is published to server, or if it's a remote track\n */\n sid?: Track.SID;\n\n /**\n * @internal\n */\n mediaStream?: MediaStream;\n\n /**\n * indicates current state of stream, it'll indicate `paused` if the track\n * has been paused by congestion controller\n */\n streamState: Track.StreamState = Track.StreamState.Active;\n\n /** @internal */\n rtpTimestamp: number | undefined;\n\n protected _mediaStreamTrack: MediaStreamTrack;\n\n protected _mediaStreamID: string;\n\n protected isInBackground: boolean = false;\n\n private backgroundTimeout: ReturnType | undefined;\n\n private loggerContextCb: LoggerOptions['loggerContextCb'];\n\n protected timeSyncHandle: number | undefined;\n\n protected _currentBitrate: number = 0;\n\n protected monitorInterval?: ReturnType;\n\n protected log: StructuredLogger = log;\n\n protected constructor(\n mediaTrack: MediaStreamTrack,\n kind: TrackKind,\n loggerOptions: LoggerOptions = {},\n ) {\n super();\n this.log = getLogger(loggerOptions.loggerName ?? LoggerNames.Track);\n this.loggerContextCb = loggerOptions.loggerContextCb;\n\n this.setMaxListeners(100);\n this.kind = kind;\n this._mediaStreamTrack = mediaTrack;\n this._mediaStreamID = mediaTrack.id;\n this.source = Track.Source.Unknown;\n }\n\n protected get logContext() {\n return {\n ...this.loggerContextCb?.(),\n ...getLogContextFromTrack(this),\n };\n }\n\n /** current receive bits per second */\n get currentBitrate(): number {\n return this._currentBitrate;\n }\n\n get mediaStreamTrack() {\n return this._mediaStreamTrack;\n }\n\n /**\n * @internal\n * used for keep mediaStream's first id, since it's id might change\n * if we disable/enable a track\n */\n get mediaStreamID(): string {\n return this._mediaStreamID;\n }\n\n /**\n * creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it\n */\n attach(): HTMLMediaElement;\n\n /**\n * attaches track to an existing HTMLAudioElement or HTMLVideoElement\n */\n attach(element: HTMLMediaElement): HTMLMediaElement;\n attach(element?: HTMLMediaElement): HTMLMediaElement {\n let elementType = 'audio';\n if (this.kind === Track.Kind.Video) {\n elementType = 'video';\n }\n if (this.attachedElements.length === 0 && this.kind === Track.Kind.Video) {\n this.addAppVisibilityListener();\n }\n if (!element) {\n if (elementType === 'audio') {\n recycledElements.forEach((e) => {\n if (e.parentElement === null && !element) {\n element = e;\n }\n });\n if (element) {\n // remove it from pool\n recycledElements.splice(recycledElements.indexOf(element), 1);\n }\n }\n if (!element) {\n element = document.createElement(elementType);\n }\n }\n\n if (!this.attachedElements.includes(element)) {\n this.attachedElements.push(element);\n }\n\n // even if we believe it's already attached to the element, it's possible\n // the element's srcObject was set to something else out of band.\n // we'll want to re-attach it in that case\n attachToElement(this.mediaStreamTrack, element);\n\n // handle auto playback failures\n const allMediaStreamTracks = (element.srcObject as MediaStream).getTracks();\n const hasAudio = allMediaStreamTracks.some((tr) => tr.kind === 'audio');\n\n // manually play media to detect auto playback status\n element\n .play()\n .then(() => {\n this.emit(hasAudio ? TrackEvent.AudioPlaybackStarted : TrackEvent.VideoPlaybackStarted);\n })\n .catch((e) => {\n if (e.name === 'NotAllowedError') {\n this.emit(hasAudio ? TrackEvent.AudioPlaybackFailed : TrackEvent.VideoPlaybackFailed, e);\n } else if (e.name === 'AbortError') {\n // commonly triggered by another `play` request, only log for debugging purposes\n log.debug(\n `${hasAudio ? 'audio' : 'video'} playback aborted, likely due to new play request`,\n );\n } else {\n log.warn(`could not playback ${hasAudio ? 'audio' : 'video'}`, e);\n }\n // If audio playback isn't allowed make sure we still play back the video\n if (\n hasAudio &&\n element &&\n allMediaStreamTracks.some((tr) => tr.kind === 'video') &&\n e.name === 'NotAllowedError'\n ) {\n element.muted = true;\n element.play().catch(() => {\n // catch for Safari, exceeded options at this point to automatically play the media element\n });\n }\n });\n\n this.emit(TrackEvent.ElementAttached, element);\n return element;\n }\n\n /**\n * Detaches from all attached elements\n */\n detach(): HTMLMediaElement[];\n\n /**\n * Detach from a single element\n * @param element\n */\n detach(element: HTMLMediaElement): HTMLMediaElement;\n detach(element?: HTMLMediaElement): HTMLMediaElement | HTMLMediaElement[] {\n try {\n // detach from a single element\n if (element) {\n detachTrack(this.mediaStreamTrack, element);\n const idx = this.attachedElements.indexOf(element);\n if (idx >= 0) {\n this.attachedElements.splice(idx, 1);\n this.recycleElement(element);\n this.emit(TrackEvent.ElementDetached, element);\n }\n return element;\n }\n\n const detached: HTMLMediaElement[] = [];\n this.attachedElements.forEach((elm) => {\n detachTrack(this.mediaStreamTrack, elm);\n detached.push(elm);\n this.recycleElement(elm);\n this.emit(TrackEvent.ElementDetached, elm);\n });\n\n // remove all tracks\n this.attachedElements = [];\n return detached;\n } finally {\n if (this.attachedElements.length === 0) {\n this.removeAppVisibilityListener();\n }\n }\n }\n\n stop() {\n this.stopMonitor();\n this._mediaStreamTrack.stop();\n }\n\n protected enable() {\n this._mediaStreamTrack.enabled = true;\n }\n\n protected disable() {\n this._mediaStreamTrack.enabled = false;\n }\n\n /* @internal */\n abstract startMonitor(signalClient?: SignalClient): void;\n\n /* @internal */\n stopMonitor() {\n if (this.monitorInterval) {\n clearInterval(this.monitorInterval);\n }\n if (this.timeSyncHandle) {\n cancelAnimationFrame(this.timeSyncHandle);\n }\n }\n\n /** @internal */\n updateLoggerOptions(loggerOptions: LoggerOptions) {\n if (loggerOptions.loggerName) {\n this.log = getLogger(loggerOptions.loggerName);\n }\n if (loggerOptions.loggerContextCb) {\n this.loggerContextCb = loggerOptions.loggerContextCb;\n }\n }\n\n private recycleElement(element: HTMLMediaElement) {\n if (element instanceof HTMLAudioElement) {\n // we only need to re-use a single element\n let shouldCache = true;\n element.pause();\n recycledElements.forEach((e) => {\n if (!e.parentElement) {\n shouldCache = false;\n }\n });\n if (shouldCache) {\n recycledElements.push(element);\n }\n }\n }\n\n protected appVisibilityChangedListener = () => {\n if (this.backgroundTimeout) {\n clearTimeout(this.backgroundTimeout);\n }\n // delay app visibility update if it goes to hidden\n // update immediately if it comes back to focus\n if (document.visibilityState === 'hidden') {\n this.backgroundTimeout = setTimeout(\n () => this.handleAppVisibilityChanged(),\n BACKGROUND_REACTION_DELAY,\n );\n } else {\n this.handleAppVisibilityChanged();\n }\n };\n\n protected async handleAppVisibilityChanged() {\n this.isInBackground = document.visibilityState === 'hidden';\n if (!this.isInBackground && this.kind === Track.Kind.Video) {\n setTimeout(\n () =>\n this.attachedElements.forEach((el) =>\n el.play().catch(() => {\n /** catch clause necessary for Safari */\n }),\n ),\n 0,\n );\n }\n }\n\n protected addAppVisibilityListener() {\n if (isWeb()) {\n this.isInBackground = document.visibilityState === 'hidden';\n document.addEventListener('visibilitychange', this.appVisibilityChangedListener);\n } else {\n this.isInBackground = false;\n }\n }\n\n protected removeAppVisibilityListener() {\n if (isWeb()) {\n document.removeEventListener('visibilitychange', this.appVisibilityChangedListener);\n }\n }\n}\n\nexport function attachToElement(track: MediaStreamTrack, element: HTMLMediaElement) {\n let mediaStream: MediaStream;\n if (element.srcObject instanceof MediaStream) {\n mediaStream = element.srcObject;\n } else {\n mediaStream = new MediaStream();\n }\n\n // check if track matches existing track\n let existingTracks: MediaStreamTrack[];\n if (track.kind === 'audio') {\n existingTracks = mediaStream.getAudioTracks();\n } else {\n existingTracks = mediaStream.getVideoTracks();\n }\n if (!existingTracks.includes(track)) {\n existingTracks.forEach((et) => {\n mediaStream.removeTrack(et);\n });\n mediaStream.addTrack(track);\n }\n\n if (!isSafari() || !(element instanceof HTMLVideoElement)) {\n // when in low power mode (applies to both macOS and iOS), Safari will show a play/pause overlay\n // when a video starts that has the `autoplay` attribute is set.\n // we work around this by _not_ setting the autoplay attribute on safari and instead call `setTimeout(() => el.play(),0)` further down\n element.autoplay = true;\n }\n // In case there are no audio tracks present on the mediastream, we set the element as muted to ensure autoplay works\n element.muted = mediaStream.getAudioTracks().length === 0;\n if (element instanceof HTMLVideoElement) {\n element.playsInline = true;\n }\n\n // avoid flicker\n if (element.srcObject !== mediaStream) {\n element.srcObject = mediaStream;\n if ((isSafari() || isFireFox()) && element instanceof HTMLVideoElement) {\n // Firefox also has a timing issue where video doesn't actually get attached unless\n // performed out-of-band\n // Safari 15 has a bug where in certain layouts, video element renders\n // black until the page is resized or other changes take place.\n // Resetting the src triggers it to render.\n // https://developer.apple.com/forums/thread/690523\n setTimeout(() => {\n element.srcObject = mediaStream;\n // Safari 15 sometimes fails to start a video\n // when the window is backgrounded before the first frame is drawn\n // manually calling play here seems to fix that\n element.play().catch(() => {\n /** do nothing */\n });\n }, 0);\n }\n }\n}\n\n/** @internal */\nexport function detachTrack(track: MediaStreamTrack, element: HTMLMediaElement) {\n if (element.srcObject instanceof MediaStream) {\n const mediaStream = element.srcObject;\n mediaStream.removeTrack(track);\n if (mediaStream.getTracks().length > 0) {\n element.srcObject = mediaStream;\n } else {\n element.srcObject = null;\n }\n }\n}\n\nexport namespace Track {\n export enum Kind {\n Audio = 'audio',\n Video = 'video',\n Unknown = 'unknown',\n }\n export type SID = string;\n export enum Source {\n Camera = 'camera',\n Microphone = 'microphone',\n ScreenShare = 'screen_share',\n ScreenShareAudio = 'screen_share_audio',\n Unknown = 'unknown',\n }\n\n export enum StreamState {\n Active = 'active',\n Paused = 'paused',\n Unknown = 'unknown',\n }\n\n export interface Dimensions {\n width: number;\n height: number;\n }\n\n /** @internal */\n export function kindToProto(k: Kind): TrackType {\n switch (k) {\n case Kind.Audio:\n return TrackType.AUDIO;\n case Kind.Video:\n return TrackType.VIDEO;\n default:\n // FIXME this was UNRECOGNIZED before\n return TrackType.DATA;\n }\n }\n\n /** @internal */\n export function kindFromProto(t: TrackType): Kind | undefined {\n switch (t) {\n case TrackType.AUDIO:\n return Kind.Audio;\n case TrackType.VIDEO:\n return Kind.Video;\n default:\n return Kind.Unknown;\n }\n }\n\n /** @internal */\n export function sourceToProto(s: Source): TrackSource {\n switch (s) {\n case Source.Camera:\n return TrackSource.CAMERA;\n case Source.Microphone:\n return TrackSource.MICROPHONE;\n case Source.ScreenShare:\n return TrackSource.SCREEN_SHARE;\n case Source.ScreenShareAudio:\n return TrackSource.SCREEN_SHARE_AUDIO;\n default:\n return TrackSource.UNKNOWN;\n }\n }\n\n /** @internal */\n export function sourceFromProto(s: TrackSource): Source {\n switch (s) {\n case TrackSource.CAMERA:\n return Source.Camera;\n case TrackSource.MICROPHONE:\n return Source.Microphone;\n case TrackSource.SCREEN_SHARE:\n return Source.ScreenShare;\n case TrackSource.SCREEN_SHARE_AUDIO:\n return Source.ScreenShareAudio;\n default:\n return Source.Unknown;\n }\n }\n\n /** @internal */\n export function streamStateFromProto(s: ProtoStreamState): StreamState {\n switch (s) {\n case ProtoStreamState.ACTIVE:\n return StreamState.Active;\n case ProtoStreamState.PAUSED:\n return StreamState.Paused;\n default:\n return StreamState.Unknown;\n }\n }\n}\n\nexport type TrackEventCallbacks = {\n message: () => void;\n muted: (track?: any) => void;\n unmuted: (track?: any) => void;\n restarted: (track?: any) => void;\n ended: (track?: any) => void;\n updateSettings: () => void;\n updateSubscription: () => void;\n audioPlaybackStarted: () => void;\n audioPlaybackFailed: (error?: Error) => void;\n audioSilenceDetected: () => void;\n visibilityChanged: (visible: boolean, track?: any) => void;\n videoDimensionsChanged: (dimensions: Track.Dimensions, track?: any) => void;\n videoPlaybackStarted: () => void;\n videoPlaybackFailed: (error?: Error) => void;\n elementAttached: (element: HTMLMediaElement) => void;\n elementDetached: (element: HTMLMediaElement) => void;\n upstreamPaused: (track: any) => void;\n upstreamResumed: (track: any) => void;\n trackProcessorUpdate: (processor?: TrackProcessor) => void;\n audioTrackFeatureUpdate: (track: any, feature: AudioTrackFeature, enabled: boolean) => void;\n timeSyncUpdate: (update: { timestamp: number; rtpTimestamp: number }) => void;\n};\n","import { TrackPublishedResponse } from '@livekit/protocol';\nimport type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from '../..';\nimport { cloneDeep } from '../../utils/cloneDeep';\nimport { isSafari, sleep } from '../utils';\nimport { Track } from './Track';\nimport type { TrackPublication } from './TrackPublication';\nimport {\n type AudioCaptureOptions,\n type CreateLocalTracksOptions,\n type ScreenShareCaptureOptions,\n type VideoCaptureOptions,\n type VideoCodec,\n} from './options';\nimport type { AudioTrack } from './types';\n\nexport function mergeDefaultOptions(\n options?: CreateLocalTracksOptions,\n audioDefaults?: AudioCaptureOptions,\n videoDefaults?: VideoCaptureOptions,\n): CreateLocalTracksOptions {\n const { optionsWithoutProcessor, audioProcessor, videoProcessor } = extractProcessorsFromOptions(\n options ?? {},\n );\n const clonedOptions: CreateLocalTracksOptions = cloneDeep(optionsWithoutProcessor) ?? {};\n if (clonedOptions.audio === true) clonedOptions.audio = {};\n if (clonedOptions.video === true) clonedOptions.video = {};\n\n // use defaults\n if (clonedOptions.audio) {\n mergeObjectWithoutOverwriting(\n clonedOptions.audio as Record,\n audioDefaults as Record,\n );\n clonedOptions.audio.deviceId ??= 'default';\n if (audioProcessor) {\n clonedOptions.audio.processor = audioProcessor;\n }\n }\n if (clonedOptions.video) {\n mergeObjectWithoutOverwriting(\n clonedOptions.video as Record,\n videoDefaults as Record,\n );\n clonedOptions.video.deviceId ??= 'default';\n if (videoProcessor) {\n clonedOptions.video.processor = videoProcessor;\n }\n }\n return clonedOptions;\n}\n\nfunction mergeObjectWithoutOverwriting(\n mainObject: Record,\n objectToMerge: Record,\n): Record {\n Object.keys(objectToMerge).forEach((key) => {\n if (mainObject[key] === undefined) mainObject[key] = objectToMerge[key];\n });\n return mainObject;\n}\n\nexport function constraintsForOptions(options: CreateLocalTracksOptions): MediaStreamConstraints {\n const constraints: MediaStreamConstraints = {};\n\n if (options.video) {\n // default video options\n if (typeof options.video === 'object') {\n const videoOptions: MediaTrackConstraints = {};\n const target = videoOptions as Record;\n const source = options.video as Record;\n Object.keys(source).forEach((key) => {\n switch (key) {\n case 'resolution':\n // flatten VideoResolution fields\n mergeObjectWithoutOverwriting(target, source.resolution as Record);\n break;\n default:\n target[key] = source[key];\n }\n });\n constraints.video = videoOptions;\n constraints.video.deviceId ??= 'default';\n } else {\n constraints.video = options.video ? { deviceId: 'default' } : false;\n }\n } else {\n constraints.video = false;\n }\n\n if (options.audio) {\n if (typeof options.audio === 'object') {\n constraints.audio = options.audio;\n constraints.audio.deviceId ??= 'default';\n } else {\n constraints.audio = { deviceId: 'default' };\n }\n } else {\n constraints.audio = false;\n }\n return constraints;\n}\n/**\n * This function detects silence on a given [[Track]] instance.\n * Returns true if the track seems to be entirely silent.\n */\nexport async function detectSilence(track: AudioTrack, timeOffset = 200): Promise {\n const ctx = getNewAudioContext();\n if (ctx) {\n const analyser = ctx.createAnalyser();\n analyser.fftSize = 2048;\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n const source = ctx.createMediaStreamSource(new MediaStream([track.mediaStreamTrack]));\n\n source.connect(analyser);\n await sleep(timeOffset);\n analyser.getByteTimeDomainData(dataArray);\n const someNoise = dataArray.some((sample) => sample !== 128 && sample !== 0);\n ctx.close();\n return !someNoise;\n }\n return false;\n}\n\n/**\n * @internal\n */\nexport function getNewAudioContext(): AudioContext | void {\n const AudioContext =\n // @ts-ignore\n typeof window !== 'undefined' && (window.AudioContext || window.webkitAudioContext);\n if (AudioContext) {\n return new AudioContext({ latencyHint: 'interactive' });\n }\n}\n\n/**\n * @internal\n */\nexport function kindToSource(kind: MediaDeviceKind) {\n if (kind === 'audioinput') {\n return Track.Source.Microphone;\n } else if (kind === 'videoinput') {\n return Track.Source.Camera;\n } else {\n return Track.Source.Unknown;\n }\n}\n\n/**\n * @internal\n */\nexport function sourceToKind(source: Track.Source): MediaDeviceKind | undefined {\n if (source === Track.Source.Microphone) {\n return 'audioinput';\n } else if (source === Track.Source.Camera) {\n return 'videoinput';\n } else {\n return undefined;\n }\n}\n\n/**\n * @internal\n */\nexport function screenCaptureToDisplayMediaStreamOptions(\n options: ScreenShareCaptureOptions,\n): DisplayMediaStreamOptions {\n let videoConstraints: MediaTrackConstraints | boolean = options.video ?? true;\n // treat 0 as uncapped\n if (options.resolution && options.resolution.width > 0 && options.resolution.height > 0) {\n videoConstraints = typeof videoConstraints === 'boolean' ? {} : videoConstraints;\n if (isSafari()) {\n videoConstraints = {\n ...videoConstraints,\n width: { max: options.resolution.width },\n height: { max: options.resolution.height },\n frameRate: options.resolution.frameRate,\n };\n } else {\n videoConstraints = {\n ...videoConstraints,\n width: { ideal: options.resolution.width },\n height: { ideal: options.resolution.height },\n frameRate: options.resolution.frameRate,\n };\n }\n }\n\n return {\n audio: options.audio ?? false,\n video: videoConstraints,\n // @ts-expect-error support for experimental display media features\n controller: options.controller,\n selfBrowserSurface: options.selfBrowserSurface,\n surfaceSwitching: options.surfaceSwitching,\n systemAudio: options.systemAudio,\n preferCurrentTab: options.preferCurrentTab,\n };\n}\n\nexport function mimeTypeToVideoCodecString(mimeType: string) {\n return mimeType.split('/')[1].toLowerCase() as VideoCodec;\n}\n\nexport function getTrackPublicationInfo(\n tracks: T[],\n): TrackPublishedResponse[] {\n const infos: TrackPublishedResponse[] = [];\n tracks.forEach((track: TrackPublication) => {\n if (track.track !== undefined) {\n infos.push(\n new TrackPublishedResponse({\n cid: track.track.mediaStreamID,\n track: track.trackInfo,\n }),\n );\n }\n });\n return infos;\n}\n\nexport function getLogContextFromTrack(track: Track | TrackPublication): Record {\n if (track instanceof Track) {\n return {\n trackID: track.sid,\n source: track.source,\n muted: track.isMuted,\n enabled: track.mediaStreamTrack.enabled,\n kind: track.kind,\n streamID: track.mediaStreamID,\n streamTrackID: track.mediaStreamTrack.id,\n };\n } else {\n return {\n trackID: track.trackSid,\n enabled: track.isEnabled,\n muted: track.isMuted,\n trackInfo: {\n mimeType: track.mimeType,\n name: track.trackName,\n encrypted: track.isEncrypted,\n kind: track.kind,\n source: track.source,\n ...(track.track ? getLogContextFromTrack(track.track) : {}),\n },\n };\n }\n}\n\nexport function supportsSynchronizationSources(): boolean {\n return typeof RTCRtpReceiver !== 'undefined' && 'getSynchronizationSources' in RTCRtpReceiver;\n}\n\nexport function diffAttributes(\n oldValues: Record | undefined,\n newValues: Record | undefined,\n) {\n if (oldValues === undefined) {\n oldValues = {};\n }\n if (newValues === undefined) {\n newValues = {};\n }\n const allKeys = [...Object.keys(newValues), ...Object.keys(oldValues)];\n const diff: Record = {};\n\n for (const key of allKeys) {\n if (oldValues[key] !== newValues[key]) {\n diff[key] = newValues[key] ?? '';\n }\n }\n\n return diff;\n}\n\n/** @internal */\nexport function extractProcessorsFromOptions(options: CreateLocalTracksOptions) {\n const newOptions = { ...options };\n let audioProcessor: TrackProcessor | undefined;\n let videoProcessor: TrackProcessor | undefined;\n\n if (typeof newOptions.audio === 'object' && newOptions.audio.processor) {\n audioProcessor = newOptions.audio.processor;\n newOptions.audio = { ...newOptions.audio, processor: undefined };\n }\n if (typeof newOptions.video === 'object' && newOptions.video.processor) {\n videoProcessor = newOptions.video.processor;\n newOptions.video = { ...newOptions.video, processor: undefined };\n }\n\n return { audioProcessor, videoProcessor, optionsWithoutProcessor: newOptions };\n}\n","export function cloneDeep(value: T) {\n if (typeof value === 'undefined') {\n return;\n }\n\n if (typeof structuredClone === 'function') {\n return structuredClone(value);\n } else {\n return JSON.parse(JSON.stringify(value)) as T;\n }\n}\n","import {\n ChatMessage as ChatMessageModel,\n ClientInfo,\n ClientInfo_SDK,\n DisconnectReason,\n Transcription as TranscriptionModel,\n} from '@livekit/protocol';\nimport { getBrowser } from '../utils/browserParser';\nimport { protocolVersion, version } from '../version';\nimport { type ConnectionError, ConnectionErrorReason } from './errors';\nimport CriticalTimers from './timers';\nimport type LocalAudioTrack from './track/LocalAudioTrack';\nimport type RemoteAudioTrack from './track/RemoteAudioTrack';\nimport { type VideoCodec, videoCodecs } from './track/options';\nimport { getNewAudioContext } from './track/utils';\nimport type { ChatMessage, LiveKitReactNativeInfo, TranscriptionSegment } from './types';\n\nconst separator = '|';\nexport const ddExtensionURI =\n 'https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension';\n\nexport function unpackStreamId(packed: string): string[] {\n const parts = packed.split(separator);\n if (parts.length > 1) {\n return [parts[0], packed.substr(parts[0].length + 1)];\n }\n return [packed, ''];\n}\n\nexport async function sleep(duration: number): Promise {\n return new Promise((resolve) => CriticalTimers.setTimeout(resolve, duration));\n}\n\n/** @internal */\nexport function supportsTransceiver() {\n return 'addTransceiver' in RTCPeerConnection.prototype;\n}\n\n/** @internal */\nexport function supportsAddTrack() {\n return 'addTrack' in RTCPeerConnection.prototype;\n}\n\nexport function supportsAdaptiveStream() {\n return typeof ResizeObserver !== undefined && typeof IntersectionObserver !== undefined;\n}\n\nexport function supportsDynacast() {\n return supportsTransceiver();\n}\n\nexport function supportsAV1(): boolean {\n if (!('getCapabilities' in RTCRtpSender)) {\n return false;\n }\n if (isSafari()) {\n // Safari 17 on iPhone14 reports AV1 capability, but does not actually support it\n return false;\n }\n const capabilities = RTCRtpSender.getCapabilities('video');\n let hasAV1 = false;\n if (capabilities) {\n for (const codec of capabilities.codecs) {\n if (codec.mimeType === 'video/AV1') {\n hasAV1 = true;\n break;\n }\n }\n }\n return hasAV1;\n}\n\nexport function supportsVP9(): boolean {\n if (!('getCapabilities' in RTCRtpSender)) {\n return false;\n }\n if (isFireFox()) {\n // technically speaking FireFox supports VP9, but SVC publishing is broken\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1633876\n return false;\n }\n if (isSafari()) {\n const browser = getBrowser();\n if (browser?.version && compareVersions(browser.version, '16') < 0) {\n // Safari 16 and below does not support VP9\n return false;\n }\n }\n const capabilities = RTCRtpSender.getCapabilities('video');\n let hasVP9 = false;\n if (capabilities) {\n for (const codec of capabilities.codecs) {\n if (codec.mimeType === 'video/VP9') {\n hasVP9 = true;\n break;\n }\n }\n }\n return hasVP9;\n}\n\nexport function isSVCCodec(codec?: string): boolean {\n return codec === 'av1' || codec === 'vp9';\n}\n\nexport function supportsSetSinkId(elm?: HTMLMediaElement): boolean {\n if (!document) {\n return false;\n }\n if (!elm) {\n elm = document.createElement('audio');\n }\n return 'setSinkId' in elm;\n}\n\nexport function isBrowserSupported() {\n if (typeof RTCPeerConnection === 'undefined') {\n return false;\n }\n return supportsTransceiver() || supportsAddTrack();\n}\n\nexport function isFireFox(): boolean {\n return getBrowser()?.name === 'Firefox';\n}\n\nexport function isChromiumBased(): boolean {\n return getBrowser()?.name === 'Chrome';\n}\n\nexport function isSafari(): boolean {\n return getBrowser()?.name === 'Safari';\n}\n\nexport function isSafari17(): boolean {\n const b = getBrowser();\n return b?.name === 'Safari' && b.version.startsWith('17.');\n}\n\nexport function isMobile(): boolean {\n if (!isWeb()) return false;\n\n return (\n // @ts-expect-error `userAgentData` is not yet part of typescript\n navigator.userAgentData?.mobile ??\n /Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent)\n );\n}\n\nexport function isE2EESimulcastSupported() {\n const browser = getBrowser();\n const supportedSafariVersion = '17.2'; // see https://bugs.webkit.org/show_bug.cgi?id=257803\n if (browser) {\n if (browser.name !== 'Safari' && browser.os !== 'iOS') {\n return true;\n } else if (\n browser.os === 'iOS' &&\n browser.osVersion &&\n compareVersions(supportedSafariVersion, browser.osVersion) >= 0\n ) {\n return true;\n } else if (\n browser.name === 'Safari' &&\n compareVersions(supportedSafariVersion, browser.version) >= 0\n ) {\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport function isWeb(): boolean {\n return typeof document !== 'undefined';\n}\n\nexport function isReactNative(): boolean {\n // navigator.product is deprecated on browsers, but will be set appropriately for react-native.\n return navigator.product == 'ReactNative';\n}\n\nexport function isCloud(serverUrl: URL) {\n return (\n serverUrl.hostname.endsWith('.livekit.cloud') || serverUrl.hostname.endsWith('.livekit.run')\n );\n}\n\nfunction getLKReactNativeInfo(): LiveKitReactNativeInfo | undefined {\n // global defined only for ReactNative.\n // @ts-ignore\n if (global && global.LiveKitReactNativeGlobal) {\n // @ts-ignore\n return global.LiveKitReactNativeGlobal as LiveKitReactNativeInfo;\n }\n\n return undefined;\n}\n\nexport function getReactNativeOs(): string | undefined {\n if (!isReactNative()) {\n return undefined;\n }\n\n let info = getLKReactNativeInfo();\n if (info) {\n return info.platform;\n }\n\n return undefined;\n}\n\nexport function getDevicePixelRatio(): number {\n if (isWeb()) {\n return window.devicePixelRatio;\n }\n\n if (isReactNative()) {\n let info = getLKReactNativeInfo();\n if (info) {\n return info.devicePixelRatio;\n }\n }\n\n return 1;\n}\n\nexport function compareVersions(v1: string, v2: string): number {\n const parts1 = v1.split('.');\n const parts2 = v2.split('.');\n const k = Math.min(parts1.length, parts2.length);\n for (let i = 0; i < k; ++i) {\n const p1 = parseInt(parts1[i], 10);\n const p2 = parseInt(parts2[i], 10);\n if (p1 > p2) return 1;\n if (p1 < p2) return -1;\n if (i === k - 1 && p1 === p2) return 0;\n }\n if (v1 === '' && v2 !== '') {\n return -1;\n } else if (v2 === '') {\n return 1;\n }\n return parts1.length == parts2.length ? 0 : parts1.length < parts2.length ? -1 : 1;\n}\n\nfunction roDispatchCallback(entries: ResizeObserverEntry[]) {\n for (const entry of entries) {\n (entry.target as ObservableMediaElement).handleResize(entry);\n }\n}\n\nfunction ioDispatchCallback(entries: IntersectionObserverEntry[]) {\n for (const entry of entries) {\n (entry.target as ObservableMediaElement).handleVisibilityChanged(entry);\n }\n}\n\nlet resizeObserver: ResizeObserver | null = null;\nexport const getResizeObserver = () => {\n if (!resizeObserver) resizeObserver = new ResizeObserver(roDispatchCallback);\n return resizeObserver;\n};\n\nlet intersectionObserver: IntersectionObserver | null = null;\nexport const getIntersectionObserver = () => {\n if (!intersectionObserver) {\n intersectionObserver = new IntersectionObserver(ioDispatchCallback, {\n root: null,\n rootMargin: '0px',\n });\n }\n return intersectionObserver;\n};\n\nexport interface ObservableMediaElement extends HTMLMediaElement {\n handleResize: (entry: ResizeObserverEntry) => void;\n handleVisibilityChanged: (entry: IntersectionObserverEntry) => void;\n}\n\nexport function getClientInfo(): ClientInfo {\n const info = new ClientInfo({\n sdk: ClientInfo_SDK.JS,\n protocol: protocolVersion,\n version,\n });\n\n if (isReactNative()) {\n info.os = getReactNativeOs() ?? '';\n }\n return info;\n}\n\nlet emptyVideoStreamTrack: MediaStreamTrack | undefined;\n\nexport function getEmptyVideoStreamTrack() {\n if (!emptyVideoStreamTrack) {\n emptyVideoStreamTrack = createDummyVideoStreamTrack();\n }\n return emptyVideoStreamTrack.clone();\n}\n\nexport function createDummyVideoStreamTrack(\n width: number = 16,\n height: number = 16,\n enabled: boolean = false,\n paintContent: boolean = false,\n) {\n const canvas = document.createElement('canvas');\n // the canvas size is set to 16 by default, because electron apps seem to fail with smaller values\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n ctx?.fillRect(0, 0, canvas.width, canvas.height);\n if (paintContent && ctx) {\n ctx.beginPath();\n ctx.arc(width / 2, height / 2, 50, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fillStyle = 'grey';\n ctx.fill();\n }\n // @ts-ignore\n const dummyStream = canvas.captureStream();\n const [dummyTrack] = dummyStream.getTracks();\n if (!dummyTrack) {\n throw Error('Could not get empty media stream video track');\n }\n dummyTrack.enabled = enabled;\n\n return dummyTrack;\n}\n\nlet emptyAudioStreamTrack: MediaStreamTrack | undefined;\n\nexport function getEmptyAudioStreamTrack() {\n if (!emptyAudioStreamTrack) {\n // implementation adapted from https://blog.mozilla.org/webrtc/warm-up-with-replacetrack/\n const ctx = new AudioContext();\n const oscillator = ctx.createOscillator();\n const gain = ctx.createGain();\n gain.gain.setValueAtTime(0, 0);\n const dst = ctx.createMediaStreamDestination();\n oscillator.connect(gain);\n gain.connect(dst);\n oscillator.start();\n [emptyAudioStreamTrack] = dst.stream.getAudioTracks();\n if (!emptyAudioStreamTrack) {\n throw Error('Could not get empty media stream audio track');\n }\n emptyAudioStreamTrack.enabled = false;\n }\n return emptyAudioStreamTrack.clone();\n}\n\nexport class Future {\n promise: Promise;\n\n resolve?: (arg: T) => void;\n\n reject?: (e: any) => void;\n\n onFinally?: () => void;\n\n constructor(\n futureBase?: (resolve: (arg: T) => void, reject: (e: any) => void) => void,\n onFinally?: () => void,\n ) {\n this.onFinally = onFinally;\n this.promise = new Promise(async (resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n if (futureBase) {\n await futureBase(resolve, reject);\n }\n }).finally(() => this.onFinally?.());\n }\n}\n\nexport type AudioAnalyserOptions = {\n /**\n * If set to true, the analyser will use a cloned version of the underlying mediastreamtrack, which won't be impacted by muting the track.\n * Useful for local tracks when implementing things like \"seems like you're muted, but trying to speak\".\n * Defaults to false\n */\n cloneTrack?: boolean;\n /**\n * see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize\n */\n fftSize?: number;\n /**\n * see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/smoothingTimeConstant\n */\n smoothingTimeConstant?: number;\n /**\n * see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/minDecibels\n */\n minDecibels?: number;\n /**\n * see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/maxDecibels\n */\n maxDecibels?: number;\n};\n\n/**\n * Creates and returns an analyser web audio node that is attached to the provided track.\n * Additionally returns a convenience method `calculateVolume` to perform instant volume readings on that track.\n * Call the returned `cleanup` function to close the audioContext that has been created for the instance of this helper\n */\nexport function createAudioAnalyser(\n track: LocalAudioTrack | RemoteAudioTrack,\n options?: AudioAnalyserOptions,\n) {\n const opts = {\n cloneTrack: false,\n fftSize: 2048,\n smoothingTimeConstant: 0.8,\n minDecibels: -100,\n maxDecibels: -80,\n ...options,\n };\n const audioContext = getNewAudioContext();\n\n if (!audioContext) {\n throw new Error('Audio Context not supported on this browser');\n }\n const streamTrack = opts.cloneTrack ? track.mediaStreamTrack.clone() : track.mediaStreamTrack;\n const mediaStreamSource = audioContext.createMediaStreamSource(new MediaStream([streamTrack]));\n const analyser = audioContext.createAnalyser();\n analyser.minDecibels = opts.minDecibels;\n analyser.maxDecibels = opts.maxDecibels;\n analyser.fftSize = opts.fftSize;\n analyser.smoothingTimeConstant = opts.smoothingTimeConstant;\n\n mediaStreamSource.connect(analyser);\n const dataArray = new Uint8Array(analyser.frequencyBinCount);\n\n /**\n * Calculates the current volume of the track in the range from 0 to 1\n */\n const calculateVolume = () => {\n analyser.getByteFrequencyData(dataArray);\n let sum = 0;\n for (const amplitude of dataArray) {\n sum += Math.pow(amplitude / 255, 2);\n }\n const volume = Math.sqrt(sum / dataArray.length);\n return volume;\n };\n\n const cleanup = async () => {\n await audioContext.close();\n if (opts.cloneTrack) {\n streamTrack.stop();\n }\n };\n\n return { calculateVolume, analyser, cleanup };\n}\n\nexport function isVideoCodec(maybeCodec: string): maybeCodec is VideoCodec {\n return videoCodecs.includes(maybeCodec as VideoCodec);\n}\n\nexport function unwrapConstraint(constraint: ConstrainDOMString): string;\nexport function unwrapConstraint(constraint: ConstrainULong): number;\nexport function unwrapConstraint(constraint: ConstrainDOMString | ConstrainULong): string | number {\n if (typeof constraint === 'string' || typeof constraint === 'number') {\n return constraint;\n }\n\n if (Array.isArray(constraint)) {\n return constraint[0];\n }\n if (constraint.exact) {\n if (Array.isArray(constraint.exact)) {\n return constraint.exact[0];\n }\n return constraint.exact;\n }\n if (constraint.ideal) {\n if (Array.isArray(constraint.ideal)) {\n return constraint.ideal[0];\n }\n return constraint.ideal;\n }\n throw Error('could not unwrap constraint');\n}\n\nexport function toWebsocketUrl(url: string): string {\n if (url.startsWith('http')) {\n return url.replace(/^(http)/, 'ws');\n }\n return url;\n}\n\nexport function toHttpUrl(url: string): string {\n if (url.startsWith('ws')) {\n return url.replace(/^(ws)/, 'http');\n }\n return url;\n}\n\nexport function extractTranscriptionSegments(\n transcription: TranscriptionModel,\n firstReceivedTimesMap: Map,\n): TranscriptionSegment[] {\n return transcription.segments.map(({ id, text, language, startTime, endTime, final }) => {\n const firstReceivedTime = firstReceivedTimesMap.get(id) ?? Date.now();\n const lastReceivedTime = Date.now();\n if (final) {\n firstReceivedTimesMap.delete(id);\n } else {\n firstReceivedTimesMap.set(id, firstReceivedTime);\n }\n return {\n id,\n text,\n startTime: Number.parseInt(startTime.toString()),\n endTime: Number.parseInt(endTime.toString()),\n final,\n language,\n firstReceivedTime,\n lastReceivedTime,\n };\n });\n}\n\nexport function extractChatMessage(msg: ChatMessageModel): ChatMessage {\n const { id, timestamp, message, editTimestamp } = msg;\n return {\n id,\n timestamp: Number.parseInt(timestamp.toString()),\n editTimestamp: editTimestamp ? Number.parseInt(editTimestamp.toString()) : undefined,\n message,\n };\n}\n\nexport function getDisconnectReasonFromConnectionError(e: ConnectionError) {\n switch (e.reason) {\n case ConnectionErrorReason.LeaveRequest:\n return e.context as DisconnectReason;\n case ConnectionErrorReason.Cancelled:\n return DisconnectReason.CLIENT_INITIATED;\n case ConnectionErrorReason.NotAllowed:\n return DisconnectReason.USER_REJECTED;\n case ConnectionErrorReason.ServerUnreachable:\n return DisconnectReason.JOIN_FAILURE;\n default:\n return DisconnectReason.UNKNOWN_REASON;\n }\n}\n","import log from '../logger';\nimport { isSafari } from './utils';\n\nconst defaultId = 'default';\n\nexport default class DeviceManager {\n private static instance?: DeviceManager;\n\n static mediaDeviceKinds: MediaDeviceKind[] = ['audioinput', 'audiooutput', 'videoinput'];\n\n static getInstance(): DeviceManager {\n if (this.instance === undefined) {\n this.instance = new DeviceManager();\n }\n return this.instance;\n }\n\n static userMediaPromiseMap: Map> = new Map();\n\n private _previousDevices: MediaDeviceInfo[] = [];\n\n get previousDevices() {\n return this._previousDevices;\n }\n\n async getDevices(\n kind?: MediaDeviceKind,\n requestPermissions: boolean = true,\n ): Promise {\n if (DeviceManager.userMediaPromiseMap?.size > 0) {\n log.debug('awaiting getUserMedia promise');\n try {\n if (kind) {\n await DeviceManager.userMediaPromiseMap.get(kind);\n } else {\n await Promise.all(DeviceManager.userMediaPromiseMap.values());\n }\n } catch (e: any) {\n log.warn('error waiting for media permissons');\n }\n }\n let devices = await navigator.mediaDevices.enumerateDevices();\n\n if (\n requestPermissions &&\n // for safari we need to skip this check, as otherwise it will re-acquire user media and fail on iOS https://bugs.webkit.org/show_bug.cgi?id=179363\n !(isSafari() && this.hasDeviceInUse(kind))\n ) {\n const isDummyDeviceOrEmpty =\n devices.filter((d) => d.kind === kind).length === 0 ||\n devices.some((device) => {\n const noLabel = device.label === '';\n const isRelevant = kind ? device.kind === kind : true;\n return noLabel && isRelevant;\n });\n\n if (isDummyDeviceOrEmpty) {\n const permissionsToAcquire = {\n video: kind !== 'audioinput' && kind !== 'audiooutput',\n audio: kind !== 'videoinput' && { deviceId: 'default' },\n };\n const stream = await navigator.mediaDevices.getUserMedia(permissionsToAcquire);\n devices = await navigator.mediaDevices.enumerateDevices();\n stream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n }\n this._previousDevices = devices;\n\n if (kind) {\n devices = devices.filter((device) => device.kind === kind);\n }\n return devices;\n }\n\n async normalizeDeviceId(\n kind: MediaDeviceKind,\n deviceId?: string,\n groupId?: string,\n ): Promise {\n if (deviceId !== defaultId) {\n return deviceId;\n }\n\n // resolve actual device id if it's 'default': Chrome returns it when no\n // device has been chosen\n const devices = await this.getDevices(kind);\n\n const defaultDevice = devices.find((d) => d.deviceId === defaultId);\n\n if (!defaultDevice) {\n log.warn('could not reliably determine default device');\n return undefined;\n }\n\n const device = devices.find(\n (d) => d.deviceId !== defaultId && d.groupId === (groupId ?? defaultDevice.groupId),\n );\n\n if (!device) {\n log.warn('could not reliably determine default device');\n return undefined;\n }\n\n return device?.deviceId;\n }\n\n private hasDeviceInUse(kind?: MediaDeviceKind): boolean {\n return kind\n ? DeviceManager.userMediaPromiseMap.has(kind)\n : DeviceManager.userMediaPromiseMap.size > 0;\n }\n}\n","import { Mutex } from '@livekit/mutex';\nimport { debounce } from 'ts-debounce';\nimport { getBrowser } from '../../utils/browserParser';\nimport DeviceManager from '../DeviceManager';\nimport { DeviceUnsupportedError, TrackInvalidError } from '../errors';\nimport { TrackEvent } from '../events';\nimport type { LoggerOptions } from '../types';\nimport { compareVersions, isMobile, sleep, unwrapConstraint } from '../utils';\nimport { Track, attachToElement, detachTrack } from './Track';\nimport type { VideoCodec } from './options';\nimport type { TrackProcessor } from './processor/types';\nimport type { ReplaceTrackOptions } from './types';\n\nconst defaultDimensionsTimeout = 1000;\n\nexport default abstract class LocalTrack<\n TrackKind extends Track.Kind = Track.Kind,\n> extends Track {\n protected _sender?: RTCRtpSender;\n\n /** @internal */\n get sender(): RTCRtpSender | undefined {\n return this._sender;\n }\n\n /** @internal */\n set sender(sender: RTCRtpSender | undefined) {\n this._sender = sender;\n }\n\n /** @internal */\n codec?: VideoCodec;\n\n get constraints() {\n return this._constraints;\n }\n\n protected _constraints: MediaTrackConstraints;\n\n protected reacquireTrack: boolean;\n\n protected providedByUser: boolean;\n\n protected muteLock: Mutex;\n\n protected pauseUpstreamLock: Mutex;\n\n protected processorElement?: HTMLMediaElement;\n\n protected processor?: TrackProcessor;\n\n protected processorLock: Mutex;\n\n protected audioContext?: AudioContext;\n\n protected manuallyStopped: boolean = false;\n\n private restartLock: Mutex;\n\n /**\n *\n * @param mediaTrack\n * @param kind\n * @param constraints MediaTrackConstraints that are being used when restarting or reacquiring tracks\n * @param userProvidedTrack Signals to the SDK whether or not the mediaTrack should be managed (i.e. released and reacquired) internally by the SDK\n */\n protected constructor(\n mediaTrack: MediaStreamTrack,\n kind: TrackKind,\n constraints?: MediaTrackConstraints,\n userProvidedTrack = false,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, kind, loggerOptions);\n this.reacquireTrack = false;\n this.providedByUser = userProvidedTrack;\n this.muteLock = new Mutex();\n this.pauseUpstreamLock = new Mutex();\n this.processorLock = new Mutex();\n this.restartLock = new Mutex();\n this.setMediaStreamTrack(mediaTrack, true);\n\n // added to satisfy TS compiler, constraints are synced with MediaStreamTrack\n this._constraints = mediaTrack.getConstraints();\n if (constraints) {\n this._constraints = constraints;\n }\n }\n\n get id(): string {\n return this._mediaStreamTrack.id;\n }\n\n get dimensions(): Track.Dimensions | undefined {\n if (this.kind !== Track.Kind.Video) {\n return undefined;\n }\n\n const { width, height } = this._mediaStreamTrack.getSettings();\n if (width && height) {\n return {\n width,\n height,\n };\n }\n return undefined;\n }\n\n private _isUpstreamPaused: boolean = false;\n\n get isUpstreamPaused() {\n return this._isUpstreamPaused;\n }\n\n get isUserProvided() {\n return this.providedByUser;\n }\n\n get mediaStreamTrack() {\n return this.processor?.processedTrack ?? this._mediaStreamTrack;\n }\n\n /**\n * @internal\n * returns mediaStreamTrack settings of the capturing mediastreamtrack source - ignoring processors\n */\n getSourceTrackSettings() {\n return this._mediaStreamTrack.getSettings();\n }\n\n private async setMediaStreamTrack(newTrack: MediaStreamTrack, force?: boolean) {\n if (newTrack === this._mediaStreamTrack && !force) {\n return;\n }\n if (this._mediaStreamTrack) {\n // detach\n this.attachedElements.forEach((el) => {\n detachTrack(this._mediaStreamTrack, el);\n });\n this.debouncedTrackMuteHandler.cancel('new-track');\n this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);\n this._mediaStreamTrack.removeEventListener('mute', this.handleTrackMuteEvent);\n this._mediaStreamTrack.removeEventListener('unmute', this.handleTrackUnmuteEvent);\n }\n\n this.mediaStream = new MediaStream([newTrack]);\n if (newTrack) {\n newTrack.addEventListener('ended', this.handleEnded);\n // when underlying track emits mute, it indicates that the device is unable\n // to produce media. In this case we'll need to signal with remote that\n // the track is \"muted\"\n // note this is different from LocalTrack.mute because we do not want to\n // touch MediaStreamTrack.enabled\n newTrack.addEventListener('mute', this.handleTrackMuteEvent);\n newTrack.addEventListener('unmute', this.handleTrackUnmuteEvent);\n this._constraints = newTrack.getConstraints();\n }\n let processedTrack: MediaStreamTrack | undefined;\n if (this.processor && newTrack) {\n const unlock = await this.processorLock.lock();\n try {\n this.log.debug('restarting processor', this.logContext);\n if (this.kind === 'unknown') {\n throw TypeError('cannot set processor on track of unknown kind');\n }\n\n if (this.processorElement) {\n attachToElement(newTrack, this.processorElement);\n // ensure the processorElement itself stays muted\n this.processorElement.muted = true;\n }\n await this.processor.restart({\n track: newTrack,\n kind: this.kind,\n element: this.processorElement,\n });\n processedTrack = this.processor.processedTrack;\n } finally {\n unlock();\n }\n }\n if (this.sender) {\n await this.sender.replaceTrack(processedTrack ?? newTrack);\n }\n // if `newTrack` is different from the existing track, stop the\n // older track just before replacing it\n if (!this.providedByUser && this._mediaStreamTrack !== newTrack) {\n this._mediaStreamTrack.stop();\n }\n this._mediaStreamTrack = newTrack;\n if (newTrack) {\n // sync muted state with the enabled state of the newly provided track\n this._mediaStreamTrack.enabled = !this.isMuted;\n // when a valid track is replace, we'd want to start producing\n await this.resumeUpstream();\n this.attachedElements.forEach((el) => {\n attachToElement(processedTrack ?? newTrack, el);\n });\n }\n }\n\n async waitForDimensions(timeout = defaultDimensionsTimeout): Promise {\n if (this.kind === Track.Kind.Audio) {\n throw new Error('cannot get dimensions for audio tracks');\n }\n\n if (getBrowser()?.os === 'iOS') {\n // browsers report wrong initial resolution on iOS.\n // when slightly delaying the call to .getSettings(), the correct resolution is being reported\n await sleep(10);\n }\n\n const started = Date.now();\n while (Date.now() - started < timeout) {\n const dims = this.dimensions;\n if (dims) {\n return dims;\n }\n await sleep(50);\n }\n throw new TrackInvalidError('unable to get track dimensions after timeout');\n }\n\n async setDeviceId(deviceId: ConstrainDOMString): Promise {\n if (\n this._constraints.deviceId === deviceId &&\n this._mediaStreamTrack.getSettings().deviceId === unwrapConstraint(deviceId)\n ) {\n return true;\n }\n this._constraints.deviceId = deviceId;\n\n // when track is muted, underlying media stream track is stopped and\n // will be restarted later\n if (this.isMuted) {\n return true;\n }\n\n await this.restartTrack();\n\n return unwrapConstraint(deviceId) === this._mediaStreamTrack.getSettings().deviceId;\n }\n\n abstract restartTrack(constraints?: unknown): Promise;\n\n /**\n * @returns DeviceID of the device that is currently being used for this track\n */\n async getDeviceId(normalize = true): Promise {\n // screen share doesn't have a usable device id\n if (this.source === Track.Source.ScreenShare) {\n return;\n }\n const { deviceId, groupId } = this._mediaStreamTrack.getSettings();\n const kind = this.kind === Track.Kind.Audio ? 'audioinput' : 'videoinput';\n\n return normalize\n ? DeviceManager.getInstance().normalizeDeviceId(kind, deviceId, groupId)\n : deviceId;\n }\n\n async mute() {\n this.setTrackMuted(true);\n return this;\n }\n\n async unmute() {\n this.setTrackMuted(false);\n return this;\n }\n\n async replaceTrack(track: MediaStreamTrack, options?: ReplaceTrackOptions): Promise;\n async replaceTrack(track: MediaStreamTrack, userProvidedTrack?: boolean): Promise;\n async replaceTrack(\n track: MediaStreamTrack,\n userProvidedOrOptions: boolean | ReplaceTrackOptions | undefined,\n ) {\n if (!this.sender) {\n throw new TrackInvalidError('unable to replace an unpublished track');\n }\n\n let userProvidedTrack: boolean | undefined;\n let stopProcessor: boolean | undefined;\n\n if (typeof userProvidedOrOptions === 'boolean') {\n userProvidedTrack = userProvidedOrOptions;\n } else if (userProvidedOrOptions !== undefined) {\n userProvidedTrack = userProvidedOrOptions.userProvidedTrack;\n stopProcessor = userProvidedOrOptions.stopProcessor;\n }\n\n this.providedByUser = userProvidedTrack ?? true;\n\n this.log.debug('replace MediaStreamTrack', this.logContext);\n await this.setMediaStreamTrack(track);\n // this must be synced *after* setting mediaStreamTrack above, since it relies\n // on the previous state in order to cleanup\n\n if (stopProcessor && this.processor) {\n await this.stopProcessor();\n }\n return this;\n }\n\n protected async restart(constraints?: MediaTrackConstraints) {\n this.manuallyStopped = false;\n const unlock = await this.restartLock.lock();\n try {\n if (!constraints) {\n constraints = this._constraints;\n }\n this.log.debug('restarting track with constraints', { ...this.logContext, constraints });\n\n const streamConstraints: MediaStreamConstraints = {\n audio: false,\n video: false,\n };\n\n if (this.kind === Track.Kind.Video) {\n streamConstraints.video = constraints;\n } else {\n streamConstraints.audio = constraints;\n }\n\n // these steps are duplicated from setMediaStreamTrack because we must stop\n // the previous tracks before new tracks can be acquired\n this.attachedElements.forEach((el) => {\n detachTrack(this.mediaStreamTrack, el);\n });\n this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);\n // on Safari, the old audio track must be stopped before attempting to acquire\n // the new track, otherwise the new track will stop with\n // 'A MediaStreamTrack ended due to a capture failure`\n this._mediaStreamTrack.stop();\n\n // create new track and attach\n const mediaStream = await navigator.mediaDevices.getUserMedia(streamConstraints);\n const newTrack = mediaStream.getTracks()[0];\n newTrack.addEventListener('ended', this.handleEnded);\n this.log.debug('re-acquired MediaStreamTrack', this.logContext);\n\n await this.setMediaStreamTrack(newTrack);\n this._constraints = constraints;\n this.emit(TrackEvent.Restarted, this);\n if (this.manuallyStopped) {\n this.log.warn(\n 'track was stopped during a restart, stopping restarted track',\n this.logContext,\n );\n this.stop();\n }\n return this;\n } finally {\n unlock();\n }\n }\n\n protected setTrackMuted(muted: boolean) {\n this.log.debug(`setting ${this.kind} track ${muted ? 'muted' : 'unmuted'}`, this.logContext);\n\n if (this.isMuted === muted && this._mediaStreamTrack.enabled !== muted) {\n return;\n }\n\n this.isMuted = muted;\n this._mediaStreamTrack.enabled = !muted;\n this.emit(muted ? TrackEvent.Muted : TrackEvent.Unmuted, this);\n }\n\n protected get needsReAcquisition(): boolean {\n return (\n this._mediaStreamTrack.readyState !== 'live' ||\n this._mediaStreamTrack.muted ||\n !this._mediaStreamTrack.enabled ||\n this.reacquireTrack\n );\n }\n\n protected async handleAppVisibilityChanged() {\n await super.handleAppVisibilityChanged();\n if (!isMobile()) return;\n this.log.debug(`visibility changed, is in Background: ${this.isInBackground}`, this.logContext);\n\n if (!this.isInBackground && this.needsReAcquisition && !this.isUserProvided && !this.isMuted) {\n this.log.debug(`track needs to be reacquired, restarting ${this.source}`, this.logContext);\n await this.restart();\n this.reacquireTrack = false;\n }\n }\n\n private handleTrackMuteEvent = () =>\n this.debouncedTrackMuteHandler().catch(() =>\n this.log.debug('track mute bounce got cancelled by an unmute event', this.logContext),\n );\n\n private debouncedTrackMuteHandler = debounce(async () => {\n await this.pauseUpstream();\n }, 5000);\n\n private handleTrackUnmuteEvent = async () => {\n this.debouncedTrackMuteHandler.cancel('unmute');\n await this.resumeUpstream();\n };\n\n private handleEnded = () => {\n if (this.isInBackground) {\n this.reacquireTrack = true;\n }\n this._mediaStreamTrack.removeEventListener('mute', this.handleTrackMuteEvent);\n this._mediaStreamTrack.removeEventListener('unmute', this.handleTrackUnmuteEvent);\n this.emit(TrackEvent.Ended, this);\n };\n\n stop() {\n this.manuallyStopped = true;\n super.stop();\n\n this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);\n this._mediaStreamTrack.removeEventListener('mute', this.handleTrackMuteEvent);\n this._mediaStreamTrack.removeEventListener('unmute', this.handleTrackUnmuteEvent);\n this.processor?.destroy();\n this.processor = undefined;\n }\n\n /**\n * pauses publishing to the server without disabling the local MediaStreamTrack\n * this is used to display a user's own video locally while pausing publishing to\n * the server.\n * this API is unsupported on Safari < 12 due to a bug\n **/\n async pauseUpstream() {\n const unlock = await this.pauseUpstreamLock.lock();\n try {\n if (this._isUpstreamPaused === true) {\n return;\n }\n if (!this.sender) {\n this.log.warn('unable to pause upstream for an unpublished track', this.logContext);\n return;\n }\n\n this._isUpstreamPaused = true;\n this.emit(TrackEvent.UpstreamPaused, this);\n const browser = getBrowser();\n if (browser?.name === 'Safari' && compareVersions(browser.version, '12.0') < 0) {\n // https://bugs.webkit.org/show_bug.cgi?id=184911\n throw new DeviceUnsupportedError('pauseUpstream is not supported on Safari < 12.');\n }\n await this.sender.replaceTrack(null);\n } finally {\n unlock();\n }\n }\n\n async resumeUpstream() {\n const unlock = await this.pauseUpstreamLock.lock();\n try {\n if (this._isUpstreamPaused === false) {\n return;\n }\n if (!this.sender) {\n this.log.warn('unable to resume upstream for an unpublished track', this.logContext);\n return;\n }\n this._isUpstreamPaused = false;\n this.emit(TrackEvent.UpstreamResumed, this);\n\n // this operation is noop if mediastreamtrack is already being sent\n await this.sender.replaceTrack(this.mediaStreamTrack);\n } finally {\n unlock();\n }\n }\n\n /**\n * Gets the RTCStatsReport for the LocalTrack's underlying RTCRtpSender\n * See https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport\n *\n * @returns Promise | undefined\n */\n async getRTCStatsReport(): Promise {\n if (!this.sender?.getStats) {\n return;\n }\n const statsReport = await this.sender.getStats();\n return statsReport;\n }\n\n /**\n * Sets a processor on this track.\n * See https://github.com/livekit/track-processors-js for example usage\n *\n * @experimental\n *\n * @param processor\n * @param showProcessedStreamLocally\n * @returns\n */\n async setProcessor(processor: TrackProcessor, showProcessedStreamLocally = true) {\n const unlock = await this.processorLock.lock();\n try {\n this.log.debug('setting up processor', this.logContext);\n\n const processorElement = document.createElement(this.kind) as HTMLMediaElement;\n\n const processorOptions = {\n kind: this.kind,\n track: this._mediaStreamTrack,\n element: processorElement,\n audioContext: this.audioContext,\n };\n await processor.init(processorOptions);\n this.log.debug('processor initialized', this.logContext);\n\n if (this.processor) {\n await this.stopProcessor();\n }\n if (this.kind === 'unknown') {\n throw TypeError('cannot set processor on track of unknown kind');\n }\n\n attachToElement(this._mediaStreamTrack, processorElement);\n processorElement.muted = true;\n\n processorElement\n .play()\n .catch((error) =>\n this.log.error('failed to play processor element', { ...this.logContext, error }),\n );\n\n this.processor = processor;\n this.processorElement = processorElement;\n if (this.processor.processedTrack) {\n for (const el of this.attachedElements) {\n if (el !== this.processorElement && showProcessedStreamLocally) {\n detachTrack(this._mediaStreamTrack, el);\n attachToElement(this.processor.processedTrack, el);\n }\n }\n await this.sender?.replaceTrack(this.processor.processedTrack);\n }\n this.emit(TrackEvent.TrackProcessorUpdate, this.processor);\n } finally {\n unlock();\n }\n }\n\n getProcessor() {\n return this.processor;\n }\n\n /**\n * Stops the track processor\n * See https://github.com/livekit/track-processors-js for example usage\n *\n * @experimental\n * @returns\n */\n async stopProcessor(keepElement = true) {\n if (!this.processor) return;\n\n this.log.debug('stopping processor', this.logContext);\n this.processor.processedTrack?.stop();\n await this.processor.destroy();\n this.processor = undefined;\n if (!keepElement) {\n this.processorElement?.remove();\n this.processorElement = undefined;\n }\n // apply original track constraints in case the processor changed them\n await this._mediaStreamTrack.applyConstraints(this._constraints);\n // force re-setting of the mediaStreamTrack on the sender\n await this.setMediaStreamTrack(this._mediaStreamTrack, true);\n this.emit(TrackEvent.TrackProcessorUpdate);\n }\n\n protected abstract monitorSender(): void;\n}\n","import { Encryption_Type, TrackInfo } from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\nimport log, { LogLevel, workerLogger } from '../logger';\nimport type RTCEngine from '../room/RTCEngine';\nimport type Room from '../room/Room';\nimport { ConnectionState } from '../room/Room';\nimport { DeviceUnsupportedError } from '../room/errors';\nimport { EngineEvent, ParticipantEvent, RoomEvent } from '../room/events';\nimport LocalTrack from '../room/track/LocalTrack';\nimport type RemoteTrack from '../room/track/RemoteTrack';\nimport type { Track } from '../room/track/Track';\nimport type { VideoCodec } from '../room/track/options';\nimport { mimeTypeToVideoCodecString } from '../room/track/utils';\nimport type { BaseKeyProvider } from './KeyProvider';\nimport { E2EE_FLAG } from './constants';\nimport { type E2EEManagerCallbacks, EncryptionEvent, KeyProviderEvent } from './events';\nimport type {\n E2EEManagerOptions,\n E2EEWorkerMessage,\n EnableMessage,\n EncodeMessage,\n InitMessage,\n KeyInfo,\n RTPVideoMapMessage,\n RatchetRequestMessage,\n RemoveTransformMessage,\n SetKeyMessage,\n SifTrailerMessage,\n UpdateCodecMessage,\n} from './types';\nimport { isE2EESupported, isScriptTransformSupported } from './utils';\n\nexport interface BaseE2EEManager {\n setup(room: Room): void;\n setupEngine(engine: RTCEngine): void;\n setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string): void;\n setSifTrailer(trailer: Uint8Array): void;\n on(event: E, listener: E2EEManagerCallbacks[E]): this;\n}\n\n/**\n * @experimental\n */\nexport class E2EEManager\n extends (EventEmitter as new () => TypedEventEmitter)\n implements BaseE2EEManager\n{\n protected worker: Worker;\n\n protected room?: Room;\n\n private encryptionEnabled: boolean;\n\n private keyProvider: BaseKeyProvider;\n\n constructor(options: E2EEManagerOptions) {\n super();\n this.keyProvider = options.keyProvider;\n this.worker = options.worker;\n this.encryptionEnabled = false;\n }\n\n /**\n * @internal\n */\n setup(room: Room) {\n if (!isE2EESupported()) {\n throw new DeviceUnsupportedError(\n 'tried to setup end-to-end encryption on an unsupported browser',\n );\n }\n log.info('setting up e2ee');\n if (room !== this.room) {\n this.room = room;\n this.setupEventListeners(room, this.keyProvider);\n // this.worker = new Worker('');\n const msg: InitMessage = {\n kind: 'init',\n data: {\n keyProviderOptions: this.keyProvider.getOptions(),\n loglevel: workerLogger.getLevel() as LogLevel,\n },\n };\n if (this.worker) {\n log.info(`initializing worker`, { worker: this.worker });\n this.worker.onmessage = this.onWorkerMessage;\n this.worker.onerror = this.onWorkerError;\n this.worker.postMessage(msg);\n }\n }\n }\n\n /**\n * @internal\n */\n setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string) {\n log.debug(`set e2ee to ${enabled} for participant ${participantIdentity}`);\n this.postEnable(enabled, participantIdentity);\n }\n\n /**\n * @internal\n */\n setSifTrailer(trailer: Uint8Array) {\n if (!trailer || trailer.length === 0) {\n log.warn(\"ignoring server sent trailer as it's empty\");\n } else {\n this.postSifTrailer(trailer);\n }\n }\n\n private onWorkerMessage = (ev: MessageEvent) => {\n const { kind, data } = ev.data;\n switch (kind) {\n case 'error':\n log.error(data.error.message);\n this.emit(EncryptionEvent.EncryptionError, data.error);\n break;\n case 'initAck':\n if (data.enabled) {\n this.keyProvider.getKeys().forEach((keyInfo) => {\n this.postKey(keyInfo);\n });\n }\n break;\n\n case 'enable':\n if (data.enabled) {\n this.keyProvider.getKeys().forEach((keyInfo) => {\n this.postKey(keyInfo);\n });\n }\n if (\n this.encryptionEnabled !== data.enabled &&\n data.participantIdentity === this.room?.localParticipant.identity\n ) {\n this.emit(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n data.enabled,\n this.room!.localParticipant,\n );\n this.encryptionEnabled = data.enabled;\n } else if (data.participantIdentity) {\n const participant = this.room?.getParticipantByIdentity(data.participantIdentity);\n if (!participant) {\n throw TypeError(\n `couldn't set encryption status, participant not found${data.participantIdentity}`,\n );\n }\n this.emit(EncryptionEvent.ParticipantEncryptionStatusChanged, data.enabled, participant);\n }\n break;\n case 'ratchetKey':\n this.keyProvider.emit(KeyProviderEvent.KeyRatcheted, data.material, data.keyIndex);\n break;\n default:\n break;\n }\n };\n\n private onWorkerError = (ev: ErrorEvent) => {\n log.error('e2ee worker encountered an error:', { error: ev.error });\n this.emit(EncryptionEvent.EncryptionError, ev.error);\n };\n\n public setupEngine(engine: RTCEngine) {\n engine.on(EngineEvent.RTPVideoMapUpdate, (rtpMap) => {\n this.postRTPMap(rtpMap);\n });\n }\n\n private setupEventListeners(room: Room, keyProvider: BaseKeyProvider) {\n room.on(RoomEvent.TrackPublished, (pub, participant) =>\n this.setParticipantCryptorEnabled(\n pub.trackInfo!.encryption !== Encryption_Type.NONE,\n participant.identity,\n ),\n );\n room\n .on(RoomEvent.ConnectionStateChanged, (state) => {\n if (state === ConnectionState.Connected) {\n room.remoteParticipants.forEach((participant) => {\n participant.trackPublications.forEach((pub) => {\n this.setParticipantCryptorEnabled(\n pub.trackInfo!.encryption !== Encryption_Type.NONE,\n participant.identity,\n );\n });\n });\n }\n })\n .on(RoomEvent.TrackUnsubscribed, (track, _, participant) => {\n const msg: RemoveTransformMessage = {\n kind: 'removeTransform',\n data: {\n participantIdentity: participant.identity,\n trackId: track.mediaStreamID,\n },\n };\n this.worker?.postMessage(msg);\n })\n .on(RoomEvent.TrackSubscribed, (track, pub, participant) => {\n this.setupE2EEReceiver(track, participant.identity, pub.trackInfo);\n })\n .on(RoomEvent.SignalConnected, () => {\n if (!this.room) {\n throw new TypeError(`expected room to be present on signal connect`);\n }\n keyProvider.getKeys().forEach((keyInfo) => {\n this.postKey(keyInfo);\n });\n this.setParticipantCryptorEnabled(\n this.room.localParticipant.isE2EEEnabled,\n this.room.localParticipant.identity,\n );\n });\n room.localParticipant.on(ParticipantEvent.LocalTrackPublished, async (publication) => {\n this.setupE2EESender(publication.track!, publication.track!.sender!);\n });\n\n keyProvider\n .on(KeyProviderEvent.SetKey, (keyInfo) => this.postKey(keyInfo))\n .on(KeyProviderEvent.RatchetRequest, (participantId, keyIndex) =>\n this.postRatchetRequest(participantId, keyIndex),\n );\n }\n\n private postRatchetRequest(participantIdentity?: string, keyIndex?: number) {\n if (!this.worker) {\n throw Error('could not ratchet key, worker is missing');\n }\n const msg: RatchetRequestMessage = {\n kind: 'ratchetRequest',\n data: {\n participantIdentity: participantIdentity,\n keyIndex,\n },\n };\n this.worker.postMessage(msg);\n }\n\n private postKey({ key, participantIdentity, keyIndex }: KeyInfo) {\n if (!this.worker) {\n throw Error('could not set key, worker is missing');\n }\n const msg: SetKeyMessage = {\n kind: 'setKey',\n data: {\n participantIdentity: participantIdentity,\n isPublisher: participantIdentity === this.room?.localParticipant.identity,\n key,\n keyIndex,\n },\n };\n this.worker.postMessage(msg);\n }\n\n private postEnable(enabled: boolean, participantIdentity: string) {\n if (this.worker) {\n const enableMsg: EnableMessage = {\n kind: 'enable',\n data: {\n enabled,\n participantIdentity,\n },\n };\n this.worker.postMessage(enableMsg);\n } else {\n throw new ReferenceError('failed to enable e2ee, worker is not ready');\n }\n }\n\n private postRTPMap(map: Map) {\n if (!this.worker) {\n throw TypeError('could not post rtp map, worker is missing');\n }\n if (!this.room?.localParticipant.identity) {\n throw TypeError('could not post rtp map, local participant identity is missing');\n }\n const msg: RTPVideoMapMessage = {\n kind: 'setRTPMap',\n data: {\n map,\n participantIdentity: this.room.localParticipant.identity,\n },\n };\n this.worker.postMessage(msg);\n }\n\n private postSifTrailer(trailer: Uint8Array) {\n if (!this.worker) {\n throw Error('could not post SIF trailer, worker is missing');\n }\n const msg: SifTrailerMessage = {\n kind: 'setSifTrailer',\n data: {\n trailer,\n },\n };\n this.worker.postMessage(msg);\n }\n\n private setupE2EEReceiver(track: RemoteTrack, remoteId: string, trackInfo?: TrackInfo) {\n if (!track.receiver) {\n return;\n }\n if (!trackInfo?.mimeType || trackInfo.mimeType === '') {\n throw new TypeError('MimeType missing from trackInfo, cannot set up E2EE cryptor');\n }\n this.handleReceiver(\n track.receiver,\n track.mediaStreamID,\n remoteId,\n track.kind === 'video' ? mimeTypeToVideoCodecString(trackInfo.mimeType) : undefined,\n );\n }\n\n private setupE2EESender(track: Track, sender: RTCRtpSender) {\n if (!(track instanceof LocalTrack) || !sender) {\n if (!sender) log.warn('early return because sender is not ready');\n return;\n }\n this.handleSender(sender, track.mediaStreamID, undefined);\n }\n\n /**\n * Handles the given {@code RTCRtpReceiver} by creating a {@code TransformStream} which will inject\n * a frame decoder.\n *\n */\n private async handleReceiver(\n receiver: RTCRtpReceiver,\n trackId: string,\n participantIdentity: string,\n codec?: VideoCodec,\n ) {\n if (!this.worker) {\n return;\n }\n\n if (isScriptTransformSupported()) {\n const options = {\n kind: 'decode',\n participantIdentity,\n trackId,\n codec,\n };\n // @ts-ignore\n receiver.transform = new RTCRtpScriptTransform(this.worker, options);\n } else {\n if (E2EE_FLAG in receiver && codec) {\n // only update codec\n const msg: UpdateCodecMessage = {\n kind: 'updateCodec',\n data: {\n trackId,\n codec,\n participantIdentity: participantIdentity,\n },\n };\n this.worker.postMessage(msg);\n return;\n }\n // @ts-ignore\n let writable: WritableStream = receiver.writableStream;\n // @ts-ignore\n let readable: ReadableStream = receiver.readableStream;\n if (!writable || !readable) {\n // @ts-ignore\n const receiverStreams = receiver.createEncodedStreams();\n // @ts-ignore\n receiver.writableStream = receiverStreams.writable;\n writable = receiverStreams.writable;\n // @ts-ignore\n receiver.readableStream = receiverStreams.readable;\n readable = receiverStreams.readable;\n }\n\n const msg: EncodeMessage = {\n kind: 'decode',\n data: {\n readableStream: readable,\n writableStream: writable,\n trackId: trackId,\n codec,\n participantIdentity: participantIdentity,\n },\n };\n this.worker.postMessage(msg, [readable, writable]);\n }\n\n // @ts-ignore\n receiver[E2EE_FLAG] = true;\n }\n\n /**\n * Handles the given {@code RTCRtpSender} by creating a {@code TransformStream} which will inject\n * a frame encoder.\n *\n */\n private handleSender(sender: RTCRtpSender, trackId: string, codec?: VideoCodec) {\n if (E2EE_FLAG in sender || !this.worker) {\n return;\n }\n\n if (!this.room?.localParticipant.identity || this.room.localParticipant.identity === '') {\n throw TypeError('local identity needs to be known in order to set up encrypted sender');\n }\n\n if (isScriptTransformSupported()) {\n log.info('initialize script transform');\n const options = {\n kind: 'encode',\n participantIdentity: this.room.localParticipant.identity,\n trackId,\n codec,\n };\n // @ts-ignore\n sender.transform = new RTCRtpScriptTransform(this.worker, options);\n } else {\n log.info('initialize encoded streams');\n // @ts-ignore\n const senderStreams = sender.createEncodedStreams();\n const msg: EncodeMessage = {\n kind: 'encode',\n data: {\n readableStream: senderStreams.readable,\n writableStream: senderStreams.writable,\n codec,\n trackId,\n participantIdentity: this.room.localParticipant.identity,\n },\n };\n this.worker.postMessage(msg, [senderStreams.readable, senderStreams.writable]);\n }\n\n // @ts-ignore\n sender[E2EE_FLAG] = true;\n }\n}\n","import { Mutex } from '@livekit/mutex';\n\ntype QueueTask = () => PromiseLike;\n\nenum QueueTaskStatus {\n 'WAITING',\n 'RUNNING',\n 'COMPLETED',\n}\n\ntype QueueTaskInfo = {\n id: number;\n enqueuedAt: number;\n executedAt?: number;\n status: QueueTaskStatus;\n};\n\nexport class AsyncQueue {\n private pendingTasks: Map;\n\n private taskMutex: Mutex;\n\n private nextTaskIndex: number;\n\n constructor() {\n this.pendingTasks = new Map();\n this.taskMutex = new Mutex();\n this.nextTaskIndex = 0;\n }\n\n async run(task: QueueTask) {\n const taskInfo: QueueTaskInfo = {\n id: this.nextTaskIndex++,\n enqueuedAt: Date.now(),\n status: QueueTaskStatus.WAITING,\n };\n this.pendingTasks.set(taskInfo.id, taskInfo);\n const unlock = await this.taskMutex.lock();\n try {\n taskInfo.executedAt = Date.now();\n taskInfo.status = QueueTaskStatus.RUNNING;\n return await task();\n } finally {\n taskInfo.status = QueueTaskStatus.COMPLETED;\n this.pendingTasks.delete(taskInfo.id);\n unlock();\n }\n }\n\n async flush() {\n return this.run(async () => {});\n }\n\n snapshot() {\n return Array.from(this.pendingTasks.values());\n }\n}\n","import { Mutex } from '@livekit/mutex';\nimport {\n AddTrackRequest,\n AudioTrackFeature,\n ClientInfo,\n ConnectionQualityUpdate,\n DisconnectReason,\n JoinResponse,\n LeaveRequest,\n LeaveRequest_Action,\n MuteTrackRequest,\n ParticipantInfo,\n Ping,\n ReconnectReason,\n ReconnectResponse,\n RequestResponse,\n Room,\n SessionDescription,\n SignalRequest,\n SignalResponse,\n SignalTarget,\n SimulateScenario,\n SpeakerInfo,\n StreamStateUpdate,\n SubscribedQualityUpdate,\n SubscriptionPermission,\n SubscriptionPermissionUpdate,\n SubscriptionResponse,\n SyncState,\n TrackPermission,\n TrackPublishedResponse,\n TrackUnpublishedResponse,\n TrickleRequest,\n UpdateLocalAudioTrack,\n UpdateParticipantMetadata,\n UpdateSubscription,\n UpdateTrackSettings,\n UpdateVideoLayers,\n VideoLayer,\n protoInt64,\n} from '@livekit/protocol';\nimport log, { LoggerNames, getLogger } from '../logger';\nimport { ConnectionError, ConnectionErrorReason } from '../room/errors';\nimport CriticalTimers from '../room/timers';\nimport type { LoggerOptions } from '../room/types';\nimport { getClientInfo, isReactNative, sleep, toWebsocketUrl } from '../room/utils';\nimport { AsyncQueue } from '../utils/AsyncQueue';\n\n// internal options\ninterface ConnectOpts extends SignalOptions {\n /** internal */\n reconnect?: boolean;\n /** internal */\n reconnectReason?: number;\n /** internal */\n sid?: string;\n}\n\n// public options\nexport interface SignalOptions {\n autoSubscribe: boolean;\n adaptiveStream?: boolean;\n maxRetries: number;\n e2eeEnabled: boolean;\n websocketTimeout: number;\n}\n\ntype SignalMessage = SignalRequest['message'];\n\ntype SignalKind = NonNullable['case'];\n\nconst passThroughQueueSignals: Array = [\n 'syncState',\n 'trickle',\n 'offer',\n 'answer',\n 'simulate',\n 'leave',\n];\n\nfunction canPassThroughQueue(req: SignalMessage): boolean {\n const canPass = passThroughQueueSignals.indexOf(req!.case) >= 0;\n log.trace('request allowed to bypass queue:', { canPass, req });\n return canPass;\n}\n\nexport enum SignalConnectionState {\n CONNECTING,\n CONNECTED,\n RECONNECTING,\n DISCONNECTING,\n DISCONNECTED,\n}\n\n/** @internal */\nexport class SignalClient {\n requestQueue: AsyncQueue;\n\n queuedRequests: Array<() => Promise>;\n\n useJSON: boolean;\n\n /** signal rtt in milliseconds */\n rtt: number = 0;\n\n /** simulate signaling latency by delaying messages */\n signalLatency?: number;\n\n onClose?: (reason: string) => void;\n\n onAnswer?: (sd: RTCSessionDescriptionInit) => void;\n\n onOffer?: (sd: RTCSessionDescriptionInit) => void;\n\n // when a new ICE candidate is made available\n onTrickle?: (sd: RTCIceCandidateInit, target: SignalTarget) => void;\n\n onParticipantUpdate?: (updates: ParticipantInfo[]) => void;\n\n onLocalTrackPublished?: (res: TrackPublishedResponse) => void;\n\n onNegotiateRequested?: () => void;\n\n onSpeakersChanged?: (res: SpeakerInfo[]) => void;\n\n onRemoteMuteChanged?: (trackSid: string, muted: boolean) => void;\n\n onRoomUpdate?: (room: Room) => void;\n\n onConnectionQuality?: (update: ConnectionQualityUpdate) => void;\n\n onStreamStateUpdate?: (update: StreamStateUpdate) => void;\n\n onSubscribedQualityUpdate?: (update: SubscribedQualityUpdate) => void;\n\n onSubscriptionPermissionUpdate?: (update: SubscriptionPermissionUpdate) => void;\n\n onSubscriptionError?: (update: SubscriptionResponse) => void;\n\n onLocalTrackUnpublished?: (res: TrackUnpublishedResponse) => void;\n\n onTokenRefresh?: (token: string) => void;\n\n onLeave?: (leave: LeaveRequest) => void;\n\n onRequestResponse?: (response: RequestResponse) => void;\n\n onLocalTrackSubscribed?: (trackSid: string) => void;\n\n connectOptions?: ConnectOpts;\n\n ws?: WebSocket;\n\n get currentState() {\n return this.state;\n }\n\n get isDisconnected() {\n return (\n this.state === SignalConnectionState.DISCONNECTING ||\n this.state === SignalConnectionState.DISCONNECTED\n );\n }\n\n private get isEstablishingConnection() {\n return (\n this.state === SignalConnectionState.CONNECTING ||\n this.state === SignalConnectionState.RECONNECTING\n );\n }\n\n private getNextRequestId() {\n this._requestId += 1;\n return this._requestId;\n }\n\n private options?: SignalOptions;\n\n private pingTimeout: ReturnType | undefined;\n\n private pingTimeoutDuration: number | undefined;\n\n private pingIntervalDuration: number | undefined;\n\n private pingInterval: ReturnType | undefined;\n\n private closingLock: Mutex;\n\n private state: SignalConnectionState = SignalConnectionState.DISCONNECTED;\n\n private connectionLock: Mutex;\n\n private log = log;\n\n private loggerContextCb?: LoggerOptions['loggerContextCb'];\n\n private _requestId = 0;\n\n constructor(useJSON: boolean = false, loggerOptions: LoggerOptions = {}) {\n this.log = getLogger(loggerOptions.loggerName ?? LoggerNames.Signal);\n this.loggerContextCb = loggerOptions.loggerContextCb;\n this.useJSON = useJSON;\n this.requestQueue = new AsyncQueue();\n this.queuedRequests = [];\n this.closingLock = new Mutex();\n this.connectionLock = new Mutex();\n this.state = SignalConnectionState.DISCONNECTED;\n }\n\n private get logContext() {\n return this.loggerContextCb?.() ?? {};\n }\n\n async join(\n url: string,\n token: string,\n opts: SignalOptions,\n abortSignal?: AbortSignal,\n ): Promise {\n // during a full reconnect, we'd want to start the sequence even if currently\n // connected\n this.state = SignalConnectionState.CONNECTING;\n this.options = opts;\n const res = await this.connect(url, token, opts, abortSignal);\n return res as JoinResponse;\n }\n\n async reconnect(\n url: string,\n token: string,\n sid?: string,\n reason?: ReconnectReason,\n ): Promise {\n if (!this.options) {\n this.log.warn(\n 'attempted to reconnect without signal options being set, ignoring',\n this.logContext,\n );\n return;\n }\n this.state = SignalConnectionState.RECONNECTING;\n // clear ping interval and restart it once reconnected\n this.clearPingInterval();\n\n const res = await this.connect(url, token, {\n ...this.options,\n reconnect: true,\n sid,\n reconnectReason: reason,\n });\n return res;\n }\n\n private connect(\n url: string,\n token: string,\n opts: ConnectOpts,\n abortSignal?: AbortSignal,\n ): Promise {\n this.connectOptions = opts;\n url = toWebsocketUrl(url);\n // strip trailing slash\n url = url.replace(/\\/$/, '');\n url += '/rtc';\n\n const clientInfo = getClientInfo();\n const params = createConnectionParams(token, clientInfo, opts);\n\n return new Promise(async (resolve, reject) => {\n const unlock = await this.connectionLock.lock();\n try {\n const abortHandler = async () => {\n this.close();\n clearTimeout(wsTimeout);\n reject(\n new ConnectionError(\n 'room connection has been cancelled (signal)',\n ConnectionErrorReason.Cancelled,\n ),\n );\n };\n\n const wsTimeout = setTimeout(() => {\n this.close();\n reject(\n new ConnectionError(\n 'room connection has timed out (signal)',\n ConnectionErrorReason.ServerUnreachable,\n ),\n );\n }, opts.websocketTimeout);\n\n if (abortSignal?.aborted) {\n abortHandler();\n }\n abortSignal?.addEventListener('abort', abortHandler);\n this.log.debug(`connecting to ${url + params}`, this.logContext);\n if (this.ws) {\n await this.close(false);\n }\n this.ws = new WebSocket(url + params);\n this.ws.binaryType = 'arraybuffer';\n\n this.ws.onopen = () => {\n clearTimeout(wsTimeout);\n };\n\n this.ws.onerror = async (ev: Event) => {\n if (this.state !== SignalConnectionState.CONNECTED) {\n this.state = SignalConnectionState.DISCONNECTED;\n clearTimeout(wsTimeout);\n try {\n const resp = await fetch(`http${url.substring(2)}/validate${params}`);\n if (resp.status.toFixed(0).startsWith('4')) {\n const msg = await resp.text();\n reject(new ConnectionError(msg, ConnectionErrorReason.NotAllowed, resp.status));\n } else {\n reject(\n new ConnectionError(\n 'Internal error',\n ConnectionErrorReason.InternalError,\n resp.status,\n ),\n );\n }\n } catch (e) {\n reject(\n new ConnectionError(\n 'server was not reachable',\n ConnectionErrorReason.ServerUnreachable,\n ),\n );\n }\n return;\n }\n // other errors, handle\n this.handleWSError(ev);\n };\n\n this.ws.onmessage = async (ev: MessageEvent) => {\n // not considered connected until JoinResponse is received\n let resp: SignalResponse;\n if (typeof ev.data === 'string') {\n const json = JSON.parse(ev.data);\n resp = SignalResponse.fromJson(json, { ignoreUnknownFields: true });\n } else if (ev.data instanceof ArrayBuffer) {\n resp = SignalResponse.fromBinary(new Uint8Array(ev.data));\n } else {\n this.log.error(\n `could not decode websocket message: ${typeof ev.data}`,\n this.logContext,\n );\n return;\n }\n\n if (this.state !== SignalConnectionState.CONNECTED) {\n let shouldProcessMessage = false;\n // handle join message only\n if (resp.message?.case === 'join') {\n this.state = SignalConnectionState.CONNECTED;\n abortSignal?.removeEventListener('abort', abortHandler);\n this.pingTimeoutDuration = resp.message.value.pingTimeout;\n this.pingIntervalDuration = resp.message.value.pingInterval;\n\n if (this.pingTimeoutDuration && this.pingTimeoutDuration > 0) {\n this.log.debug('ping config', {\n ...this.logContext,\n timeout: this.pingTimeoutDuration,\n interval: this.pingIntervalDuration,\n });\n this.startPingInterval();\n }\n resolve(resp.message.value);\n } else if (\n this.state === SignalConnectionState.RECONNECTING &&\n resp.message.case !== 'leave'\n ) {\n // in reconnecting, any message received means signal reconnected\n this.state = SignalConnectionState.CONNECTED;\n abortSignal?.removeEventListener('abort', abortHandler);\n this.startPingInterval();\n if (resp.message?.case === 'reconnect') {\n resolve(resp.message.value);\n } else {\n this.log.debug(\n 'declaring signal reconnected without reconnect response received',\n this.logContext,\n );\n resolve(undefined);\n shouldProcessMessage = true;\n }\n } else if (this.isEstablishingConnection && resp.message.case === 'leave') {\n reject(\n new ConnectionError(\n 'Received leave request while trying to (re)connect',\n ConnectionErrorReason.LeaveRequest,\n undefined,\n resp.message.value.reason,\n ),\n );\n } else if (!opts.reconnect) {\n // non-reconnect case, should receive join response first\n reject(\n new ConnectionError(\n `did not receive join response, got ${resp.message?.case} instead`,\n ConnectionErrorReason.InternalError,\n ),\n );\n }\n if (!shouldProcessMessage) {\n return;\n }\n }\n\n if (this.signalLatency) {\n await sleep(this.signalLatency);\n }\n this.handleSignalResponse(resp);\n };\n\n this.ws.onclose = (ev: CloseEvent) => {\n if (this.isEstablishingConnection) {\n reject(\n new ConnectionError(\n 'Websocket got closed during a (re)connection attempt',\n ConnectionErrorReason.InternalError,\n ),\n );\n }\n\n this.log.warn(`websocket closed`, {\n ...this.logContext,\n reason: ev.reason,\n code: ev.code,\n wasClean: ev.wasClean,\n state: this.state,\n });\n this.handleOnClose(ev.reason);\n };\n } finally {\n unlock();\n }\n });\n }\n\n /** @internal */\n resetCallbacks = () => {\n this.onAnswer = undefined;\n this.onLeave = undefined;\n this.onLocalTrackPublished = undefined;\n this.onLocalTrackUnpublished = undefined;\n this.onNegotiateRequested = undefined;\n this.onOffer = undefined;\n this.onRemoteMuteChanged = undefined;\n this.onSubscribedQualityUpdate = undefined;\n this.onTokenRefresh = undefined;\n this.onTrickle = undefined;\n this.onClose = undefined;\n };\n\n async close(updateState: boolean = true) {\n const unlock = await this.closingLock.lock();\n try {\n this.clearPingInterval();\n if (updateState) {\n this.state = SignalConnectionState.DISCONNECTING;\n }\n if (this.ws) {\n this.ws.onmessage = null;\n this.ws.onopen = null;\n this.ws.onclose = null;\n\n // calling `ws.close()` only starts the closing handshake (CLOSING state), prefer to wait until state is actually CLOSED\n const closePromise = new Promise((resolve) => {\n if (this.ws) {\n this.ws.onclose = () => {\n resolve();\n };\n } else {\n resolve();\n }\n });\n\n if (this.ws.readyState < this.ws.CLOSING) {\n this.ws.close();\n // 250ms grace period for ws to close gracefully\n await Promise.race([closePromise, sleep(250)]);\n }\n this.ws = undefined;\n }\n } finally {\n if (updateState) {\n this.state = SignalConnectionState.DISCONNECTED;\n }\n unlock();\n }\n }\n\n // initial offer after joining\n sendOffer(offer: RTCSessionDescriptionInit) {\n this.log.debug('sending offer', { ...this.logContext, offerSdp: offer.sdp });\n this.sendRequest({\n case: 'offer',\n value: toProtoSessionDescription(offer),\n });\n }\n\n // answer a server-initiated offer\n sendAnswer(answer: RTCSessionDescriptionInit) {\n this.log.debug('sending answer', { ...this.logContext, answerSdp: answer.sdp });\n return this.sendRequest({\n case: 'answer',\n value: toProtoSessionDescription(answer),\n });\n }\n\n sendIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget) {\n this.log.trace('sending ice candidate', { ...this.logContext, candidate });\n return this.sendRequest({\n case: 'trickle',\n value: new TrickleRequest({\n candidateInit: JSON.stringify(candidate),\n target,\n }),\n });\n }\n\n sendMuteTrack(trackSid: string, muted: boolean) {\n return this.sendRequest({\n case: 'mute',\n value: new MuteTrackRequest({\n sid: trackSid,\n muted,\n }),\n });\n }\n\n sendAddTrack(req: AddTrackRequest) {\n return this.sendRequest({\n case: 'addTrack',\n value: req,\n });\n }\n\n async sendUpdateLocalMetadata(\n metadata: string,\n name: string,\n attributes: Record = {},\n ) {\n const requestId = this.getNextRequestId();\n await this.sendRequest({\n case: 'updateMetadata',\n value: new UpdateParticipantMetadata({\n requestId,\n metadata,\n name,\n attributes,\n }),\n });\n return requestId;\n }\n\n sendUpdateTrackSettings(settings: UpdateTrackSettings) {\n this.sendRequest({\n case: 'trackSetting',\n value: settings,\n });\n }\n\n sendUpdateSubscription(sub: UpdateSubscription) {\n return this.sendRequest({\n case: 'subscription',\n value: sub,\n });\n }\n\n sendSyncState(sync: SyncState) {\n return this.sendRequest({\n case: 'syncState',\n value: sync,\n });\n }\n\n sendUpdateVideoLayers(trackSid: string, layers: VideoLayer[]) {\n return this.sendRequest({\n case: 'updateLayers',\n value: new UpdateVideoLayers({\n trackSid,\n layers,\n }),\n });\n }\n\n sendUpdateSubscriptionPermissions(allParticipants: boolean, trackPermissions: TrackPermission[]) {\n return this.sendRequest({\n case: 'subscriptionPermission',\n value: new SubscriptionPermission({\n allParticipants,\n trackPermissions,\n }),\n });\n }\n\n sendSimulateScenario(scenario: SimulateScenario) {\n return this.sendRequest({\n case: 'simulate',\n value: scenario,\n });\n }\n\n sendPing() {\n /** send both of ping and pingReq for compatibility to old and new server */\n return Promise.all([\n this.sendRequest({\n case: 'ping',\n value: protoInt64.parse(Date.now()),\n }),\n this.sendRequest({\n case: 'pingReq',\n value: new Ping({\n timestamp: protoInt64.parse(Date.now()),\n rtt: protoInt64.parse(this.rtt),\n }),\n }),\n ]);\n }\n\n sendUpdateLocalAudioTrack(trackSid: string, features: AudioTrackFeature[]) {\n return this.sendRequest({\n case: 'updateAudioTrack',\n value: new UpdateLocalAudioTrack({ trackSid, features }),\n });\n }\n\n sendLeave() {\n return this.sendRequest({\n case: 'leave',\n value: new LeaveRequest({\n reason: DisconnectReason.CLIENT_INITIATED,\n // server doesn't process this field, keeping it here to indicate the intent of a full disconnect\n action: LeaveRequest_Action.DISCONNECT,\n }),\n });\n }\n\n async sendRequest(message: SignalMessage, fromQueue: boolean = false) {\n // capture all requests while reconnecting and put them in a queue\n // unless the request originates from the queue, then don't enqueue again\n const canQueue = !fromQueue && !canPassThroughQueue(message);\n if (canQueue && this.state === SignalConnectionState.RECONNECTING) {\n this.queuedRequests.push(async () => {\n await this.sendRequest(message, true);\n });\n return;\n }\n // make sure previously queued requests are being sent first\n if (!fromQueue) {\n await this.requestQueue.flush();\n }\n if (this.signalLatency) {\n await sleep(this.signalLatency);\n }\n if (!this.ws || this.ws.readyState !== this.ws.OPEN) {\n this.log.error(\n `cannot send signal request before connected, type: ${message?.case}`,\n this.logContext,\n );\n return;\n }\n const req = new SignalRequest({ message });\n\n try {\n if (this.useJSON) {\n this.ws.send(req.toJsonString());\n } else {\n this.ws.send(req.toBinary());\n }\n } catch (e) {\n this.log.error('error sending signal message', { ...this.logContext, error: e });\n }\n }\n\n private handleSignalResponse(res: SignalResponse) {\n const msg = res.message;\n if (msg == undefined) {\n this.log.debug('received unsupported message', this.logContext);\n return;\n }\n\n let pingHandled = false;\n if (msg.case === 'answer') {\n const sd = fromProtoSessionDescription(msg.value);\n if (this.onAnswer) {\n this.onAnswer(sd);\n }\n } else if (msg.case === 'offer') {\n const sd = fromProtoSessionDescription(msg.value);\n if (this.onOffer) {\n this.onOffer(sd);\n }\n } else if (msg.case === 'trickle') {\n const candidate: RTCIceCandidateInit = JSON.parse(msg.value.candidateInit!);\n if (this.onTrickle) {\n this.onTrickle(candidate, msg.value.target);\n }\n } else if (msg.case === 'update') {\n if (this.onParticipantUpdate) {\n this.onParticipantUpdate(msg.value.participants ?? []);\n }\n } else if (msg.case === 'trackPublished') {\n if (this.onLocalTrackPublished) {\n this.onLocalTrackPublished(msg.value);\n }\n } else if (msg.case === 'speakersChanged') {\n if (this.onSpeakersChanged) {\n this.onSpeakersChanged(msg.value.speakers ?? []);\n }\n } else if (msg.case === 'leave') {\n if (this.onLeave) {\n this.onLeave(msg.value);\n }\n } else if (msg.case === 'mute') {\n if (this.onRemoteMuteChanged) {\n this.onRemoteMuteChanged(msg.value.sid, msg.value.muted);\n }\n } else if (msg.case === 'roomUpdate') {\n if (this.onRoomUpdate && msg.value.room) {\n this.onRoomUpdate(msg.value.room);\n }\n } else if (msg.case === 'connectionQuality') {\n if (this.onConnectionQuality) {\n this.onConnectionQuality(msg.value);\n }\n } else if (msg.case === 'streamStateUpdate') {\n if (this.onStreamStateUpdate) {\n this.onStreamStateUpdate(msg.value);\n }\n } else if (msg.case === 'subscribedQualityUpdate') {\n if (this.onSubscribedQualityUpdate) {\n this.onSubscribedQualityUpdate(msg.value);\n }\n } else if (msg.case === 'subscriptionPermissionUpdate') {\n if (this.onSubscriptionPermissionUpdate) {\n this.onSubscriptionPermissionUpdate(msg.value);\n }\n } else if (msg.case === 'refreshToken') {\n if (this.onTokenRefresh) {\n this.onTokenRefresh(msg.value);\n }\n } else if (msg.case === 'trackUnpublished') {\n if (this.onLocalTrackUnpublished) {\n this.onLocalTrackUnpublished(msg.value);\n }\n } else if (msg.case === 'subscriptionResponse') {\n if (this.onSubscriptionError) {\n this.onSubscriptionError(msg.value);\n }\n } else if (msg.case === 'pong') {\n } else if (msg.case === 'pongResp') {\n this.rtt = Date.now() - Number.parseInt(msg.value.lastPingTimestamp.toString());\n this.resetPingTimeout();\n pingHandled = true;\n } else if (msg.case === 'requestResponse') {\n if (this.onRequestResponse) {\n this.onRequestResponse(msg.value);\n }\n } else if (msg.case === 'trackSubscribed') {\n if (this.onLocalTrackSubscribed) {\n this.onLocalTrackSubscribed(msg.value.trackSid);\n }\n } else {\n this.log.debug('unsupported message', { ...this.logContext, msgCase: msg.case });\n }\n\n if (!pingHandled) {\n this.resetPingTimeout();\n }\n }\n\n setReconnected() {\n while (this.queuedRequests.length > 0) {\n const req = this.queuedRequests.shift();\n if (req) {\n this.requestQueue.run(req);\n }\n }\n }\n\n private async handleOnClose(reason: string) {\n if (this.state === SignalConnectionState.DISCONNECTED) return;\n const onCloseCallback = this.onClose;\n await this.close();\n this.log.debug(`websocket connection closed: ${reason}`, { ...this.logContext, reason });\n if (onCloseCallback) {\n onCloseCallback(reason);\n }\n }\n\n private handleWSError(ev: Event) {\n this.log.error('websocket error', { ...this.logContext, error: ev });\n }\n\n /**\n * Resets the ping timeout and starts a new timeout.\n * Call this after receiving a pong message\n */\n private resetPingTimeout() {\n this.clearPingTimeout();\n if (!this.pingTimeoutDuration) {\n this.log.warn('ping timeout duration not set', this.logContext);\n return;\n }\n this.pingTimeout = CriticalTimers.setTimeout(() => {\n this.log.warn(\n `ping timeout triggered. last pong received at: ${new Date(\n Date.now() - this.pingTimeoutDuration! * 1000,\n ).toUTCString()}`,\n this.logContext,\n );\n this.handleOnClose('ping timeout');\n }, this.pingTimeoutDuration * 1000);\n }\n\n /**\n * Clears ping timeout (does not start a new timeout)\n */\n private clearPingTimeout() {\n if (this.pingTimeout) {\n CriticalTimers.clearTimeout(this.pingTimeout);\n }\n }\n\n private startPingInterval() {\n this.clearPingInterval();\n this.resetPingTimeout();\n if (!this.pingIntervalDuration) {\n this.log.warn('ping interval duration not set', this.logContext);\n return;\n }\n this.log.debug('start ping interval', this.logContext);\n this.pingInterval = CriticalTimers.setInterval(() => {\n this.sendPing();\n }, this.pingIntervalDuration * 1000);\n }\n\n private clearPingInterval() {\n this.log.debug('clearing ping interval', this.logContext);\n this.clearPingTimeout();\n if (this.pingInterval) {\n CriticalTimers.clearInterval(this.pingInterval);\n }\n }\n}\n\nfunction fromProtoSessionDescription(sd: SessionDescription): RTCSessionDescriptionInit {\n const rsd: RTCSessionDescriptionInit = {\n type: 'offer',\n sdp: sd.sdp,\n };\n switch (sd.type) {\n case 'answer':\n case 'offer':\n case 'pranswer':\n case 'rollback':\n rsd.type = sd.type;\n break;\n default:\n break;\n }\n return rsd;\n}\n\nexport function toProtoSessionDescription(\n rsd: RTCSessionDescription | RTCSessionDescriptionInit,\n): SessionDescription {\n const sd = new SessionDescription({\n sdp: rsd.sdp!,\n type: rsd.type!,\n });\n return sd;\n}\n\nfunction createConnectionParams(token: string, info: ClientInfo, opts: ConnectOpts): string {\n const params = new URLSearchParams();\n params.set('access_token', token);\n\n // opts\n if (opts.reconnect) {\n params.set('reconnect', '1');\n if (opts.sid) {\n params.set('sid', opts.sid);\n }\n }\n\n params.set('auto_subscribe', opts.autoSubscribe ? '1' : '0');\n\n // ClientInfo\n params.set('sdk', isReactNative() ? 'reactnative' : 'js');\n params.set('version', info.version!);\n params.set('protocol', info.protocol!.toString());\n if (info.deviceModel) {\n params.set('device_model', info.deviceModel);\n }\n if (info.os) {\n params.set('os', info.os);\n }\n if (info.osVersion) {\n params.set('os_version', info.osVersion);\n }\n if (info.browser) {\n params.set('browser', info.browser);\n }\n if (info.browserVersion) {\n params.set('browser_version', info.browserVersion);\n }\n\n if (opts.adaptiveStream) {\n params.set('adaptive_stream', '1');\n }\n\n if (opts.reconnectReason) {\n params.set('reconnect_reason', opts.reconnectReason.toString());\n }\n\n // @ts-ignore\n if (navigator.connection?.type) {\n // @ts-ignore\n params.set('network', navigator.connection.type);\n }\n\n return `?${params.toString()}`;\n}\n","import { version as v } from '../package.json';\n\nexport const version = v;\nexport const protocolVersion = 15;\n","var grammar = module.exports = {\n v: [{\n name: 'version',\n reg: /^(\\d*)$/\n }],\n o: [{\n // o=- 20518 0 IN IP4 203.0.113.1\n // NB: sessionId will be a String in most cases because it is huge\n name: 'origin',\n reg: /^(\\S*) (\\d*) (\\d*) (\\S*) IP(\\d) (\\S*)/,\n names: ['username', 'sessionId', 'sessionVersion', 'netType', 'ipVer', 'address'],\n format: '%s %s %d %s IP%d %s'\n }],\n // default parsing of these only (though some of these feel outdated)\n s: [{ name: 'name' }],\n i: [{ name: 'description' }],\n u: [{ name: 'uri' }],\n e: [{ name: 'email' }],\n p: [{ name: 'phone' }],\n z: [{ name: 'timezones' }], // TODO: this one can actually be parsed properly...\n r: [{ name: 'repeats' }], // TODO: this one can also be parsed properly\n // k: [{}], // outdated thing ignored\n t: [{\n // t=0 0\n name: 'timing',\n reg: /^(\\d*) (\\d*)/,\n names: ['start', 'stop'],\n format: '%d %d'\n }],\n c: [{\n // c=IN IP4 10.47.197.26\n name: 'connection',\n reg: /^IN IP(\\d) (\\S*)/,\n names: ['version', 'ip'],\n format: 'IN IP%d %s'\n }],\n b: [{\n // b=AS:4000\n push: 'bandwidth',\n reg: /^(TIAS|AS|CT|RR|RS):(\\d*)/,\n names: ['type', 'limit'],\n format: '%s:%s'\n }],\n m: [{\n // m=video 51744 RTP/AVP 126 97 98 34 31\n // NB: special - pushes to session\n // TODO: rtp/fmtp should be filtered by the payloads found here?\n reg: /^(\\w*) (\\d*) ([\\w/]*)(?: (.*))?/,\n names: ['type', 'port', 'protocol', 'payloads'],\n format: '%s %d %s %s'\n }],\n a: [\n {\n // a=rtpmap:110 opus/48000/2\n push: 'rtp',\n reg: /^rtpmap:(\\d*) ([\\w\\-.]*)(?:\\s*\\/(\\d*)(?:\\s*\\/(\\S*))?)?/,\n names: ['payload', 'codec', 'rate', 'encoding'],\n format: function (o) {\n return (o.encoding)\n ? 'rtpmap:%d %s/%s/%s'\n : o.rate\n ? 'rtpmap:%d %s/%s'\n : 'rtpmap:%d %s';\n }\n },\n {\n // a=fmtp:108 profile-level-id=24;object=23;bitrate=64000\n // a=fmtp:111 minptime=10; useinbandfec=1\n push: 'fmtp',\n reg: /^fmtp:(\\d*) ([\\S| ]*)/,\n names: ['payload', 'config'],\n format: 'fmtp:%d %s'\n },\n {\n // a=control:streamid=0\n name: 'control',\n reg: /^control:(.*)/,\n format: 'control:%s'\n },\n {\n // a=rtcp:65179 IN IP4 193.84.77.194\n name: 'rtcp',\n reg: /^rtcp:(\\d*)(?: (\\S*) IP(\\d) (\\S*))?/,\n names: ['port', 'netType', 'ipVer', 'address'],\n format: function (o) {\n return (o.address != null)\n ? 'rtcp:%d %s IP%d %s'\n : 'rtcp:%d';\n }\n },\n {\n // a=rtcp-fb:98 trr-int 100\n push: 'rtcpFbTrrInt',\n reg: /^rtcp-fb:(\\*|\\d*) trr-int (\\d*)/,\n names: ['payload', 'value'],\n format: 'rtcp-fb:%s trr-int %d'\n },\n {\n // a=rtcp-fb:98 nack rpsi\n push: 'rtcpFb',\n reg: /^rtcp-fb:(\\*|\\d*) ([\\w-_]*)(?: ([\\w-_]*))?/,\n names: ['payload', 'type', 'subtype'],\n format: function (o) {\n return (o.subtype != null)\n ? 'rtcp-fb:%s %s %s'\n : 'rtcp-fb:%s %s';\n }\n },\n {\n // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n // a=extmap:1/recvonly URI-gps-string\n // a=extmap:3 urn:ietf:params:rtp-hdrext:encrypt urn:ietf:params:rtp-hdrext:smpte-tc 25@600/24\n push: 'ext',\n reg: /^extmap:(\\d+)(?:\\/(\\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\\S*)(?: (\\S*))?/,\n names: ['value', 'direction', 'encrypt-uri', 'uri', 'config'],\n format: function (o) {\n return (\n 'extmap:%d' +\n (o.direction ? '/%s' : '%v') +\n (o['encrypt-uri'] ? ' %s' : '%v') +\n ' %s' +\n (o.config ? ' %s' : '')\n );\n }\n },\n {\n // a=extmap-allow-mixed\n name: 'extmapAllowMixed',\n reg: /^(extmap-allow-mixed)/\n },\n {\n // a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32\n push: 'crypto',\n reg: /^crypto:(\\d*) ([\\w_]*) (\\S*)(?: (\\S*))?/,\n names: ['id', 'suite', 'config', 'sessionConfig'],\n format: function (o) {\n return (o.sessionConfig != null)\n ? 'crypto:%d %s %s %s'\n : 'crypto:%d %s %s';\n }\n },\n {\n // a=setup:actpass\n name: 'setup',\n reg: /^setup:(\\w*)/,\n format: 'setup:%s'\n },\n {\n // a=connection:new\n name: 'connectionType',\n reg: /^connection:(new|existing)/,\n format: 'connection:%s'\n },\n {\n // a=mid:1\n name: 'mid',\n reg: /^mid:([^\\s]*)/,\n format: 'mid:%s'\n },\n {\n // a=msid:0c8b064d-d807-43b4-b434-f92a889d8587 98178685-d409-46e0-8e16-7ef0db0db64a\n name: 'msid',\n reg: /^msid:(.*)/,\n format: 'msid:%s'\n },\n {\n // a=ptime:20\n name: 'ptime',\n reg: /^ptime:(\\d*(?:\\.\\d*)*)/,\n format: 'ptime:%d'\n },\n {\n // a=maxptime:60\n name: 'maxptime',\n reg: /^maxptime:(\\d*(?:\\.\\d*)*)/,\n format: 'maxptime:%d'\n },\n {\n // a=sendrecv\n name: 'direction',\n reg: /^(sendrecv|recvonly|sendonly|inactive)/\n },\n {\n // a=ice-lite\n name: 'icelite',\n reg: /^(ice-lite)/\n },\n {\n // a=ice-ufrag:F7gI\n name: 'iceUfrag',\n reg: /^ice-ufrag:(\\S*)/,\n format: 'ice-ufrag:%s'\n },\n {\n // a=ice-pwd:x9cml/YzichV2+XlhiMu8g\n name: 'icePwd',\n reg: /^ice-pwd:(\\S*)/,\n format: 'ice-pwd:%s'\n },\n {\n // a=fingerprint:SHA-1 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33\n name: 'fingerprint',\n reg: /^fingerprint:(\\S*) (\\S*)/,\n names: ['type', 'hash'],\n format: 'fingerprint:%s %s'\n },\n {\n // a=candidate:0 1 UDP 2113667327 203.0.113.1 54400 typ host\n // a=candidate:1162875081 1 udp 2113937151 192.168.34.75 60017 typ host generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 udp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 generation 0 network-id 3 network-cost 10\n // a=candidate:229815620 1 tcp 1518280447 192.168.150.19 60017 typ host tcptype active generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 tcp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 tcptype passive generation 0 network-id 3 network-cost 10\n push:'candidates',\n reg: /^candidate:(\\S*) (\\d*) (\\S*) (\\d*) (\\S*) (\\d*) typ (\\S*)(?: raddr (\\S*) rport (\\d*))?(?: tcptype (\\S*))?(?: generation (\\d*))?(?: network-id (\\d*))?(?: network-cost (\\d*))?/,\n names: ['foundation', 'component', 'transport', 'priority', 'ip', 'port', 'type', 'raddr', 'rport', 'tcptype', 'generation', 'network-id', 'network-cost'],\n format: function (o) {\n var str = 'candidate:%s %d %s %d %s %d typ %s';\n\n str += (o.raddr != null) ? ' raddr %s rport %d' : '%v%v';\n\n // NB: candidate has three optional chunks, so %void middles one if it's missing\n str += (o.tcptype != null) ? ' tcptype %s' : '%v';\n\n if (o.generation != null) {\n str += ' generation %d';\n }\n\n str += (o['network-id'] != null) ? ' network-id %d' : '%v';\n str += (o['network-cost'] != null) ? ' network-cost %d' : '%v';\n return str;\n }\n },\n {\n // a=end-of-candidates (keep after the candidates line for readability)\n name: 'endOfCandidates',\n reg: /^(end-of-candidates)/\n },\n {\n // a=remote-candidates:1 203.0.113.1 54400 2 203.0.113.1 54401 ...\n name: 'remoteCandidates',\n reg: /^remote-candidates:(.*)/,\n format: 'remote-candidates:%s'\n },\n {\n // a=ice-options:google-ice\n name: 'iceOptions',\n reg: /^ice-options:(\\S*)/,\n format: 'ice-options:%s'\n },\n {\n // a=ssrc:2566107569 cname:t9YU8M1UxTF8Y1A1\n push: 'ssrcs',\n reg: /^ssrc:(\\d*) ([\\w_-]*)(?::(.*))?/,\n names: ['id', 'attribute', 'value'],\n format: function (o) {\n var str = 'ssrc:%d';\n if (o.attribute != null) {\n str += ' %s';\n if (o.value != null) {\n str += ':%s';\n }\n }\n return str;\n }\n },\n {\n // a=ssrc-group:FEC 1 2\n // a=ssrc-group:FEC-FR 3004364195 1080772241\n push: 'ssrcGroups',\n // token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 / %x41-5A / %x5E-7E\n reg: /^ssrc-group:([\\x21\\x23\\x24\\x25\\x26\\x27\\x2A\\x2B\\x2D\\x2E\\w]*) (.*)/,\n names: ['semantics', 'ssrcs'],\n format: 'ssrc-group:%s %s'\n },\n {\n // a=msid-semantic: WMS Jvlam5X3SX1OP6pn20zWogvaKJz5Hjf9OnlV\n name: 'msidSemantic',\n reg: /^msid-semantic:\\s?(\\w*) (\\S*)/,\n names: ['semantic', 'token'],\n format: 'msid-semantic: %s %s' // space after ':' is not accidental\n },\n {\n // a=group:BUNDLE audio video\n push: 'groups',\n reg: /^group:(\\w*) (.*)/,\n names: ['type', 'mids'],\n format: 'group:%s %s'\n },\n {\n // a=rtcp-mux\n name: 'rtcpMux',\n reg: /^(rtcp-mux)/\n },\n {\n // a=rtcp-rsize\n name: 'rtcpRsize',\n reg: /^(rtcp-rsize)/\n },\n {\n // a=sctpmap:5000 webrtc-datachannel 1024\n name: 'sctpmap',\n reg: /^sctpmap:([\\w_/]*) (\\S*)(?: (\\S*))?/,\n names: ['sctpmapNumber', 'app', 'maxMessageSize'],\n format: function (o) {\n return (o.maxMessageSize != null)\n ? 'sctpmap:%s %s %s'\n : 'sctpmap:%s %s';\n }\n },\n {\n // a=x-google-flag:conference\n name: 'xGoogleFlag',\n reg: /^x-google-flag:([^\\s]*)/,\n format: 'x-google-flag:%s'\n },\n {\n // a=rid:1 send max-width=1280;max-height=720;max-fps=30;depend=0\n push: 'rids',\n reg: /^rid:([\\d\\w]+) (\\w+)(?: ([\\S| ]*))?/,\n names: ['id', 'direction', 'params'],\n format: function (o) {\n return (o.params) ? 'rid:%s %s %s' : 'rid:%s %s';\n }\n },\n {\n // a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] recv [x=330,y=250]\n // a=imageattr:* send [x=800,y=640] recv *\n // a=imageattr:100 recv [x=320,y=240]\n push: 'imageattrs',\n reg: new RegExp(\n // a=imageattr:97\n '^imageattr:(\\\\d+|\\\\*)' +\n // send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320]\n '[\\\\s\\\\t]+(send|recv)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*)' +\n // recv [x=330,y=250]\n '(?:[\\\\s\\\\t]+(recv|send)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*))?'\n ),\n names: ['pt', 'dir1', 'attrs1', 'dir2', 'attrs2'],\n format: function (o) {\n return 'imageattr:%s %s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // a=simulcast:send 1,2,3;~4,~5 recv 6;~7,~8\n // a=simulcast:recv 1;4,5 send 6;7\n name: 'simulcast',\n reg: new RegExp(\n // a=simulcast:\n '^simulcast:' +\n // send 1,2,3;~4,~5\n '(send|recv) ([a-zA-Z0-9\\\\-_~;,]+)' +\n // space + recv 6;~7,~8\n '(?:\\\\s?(send|recv) ([a-zA-Z0-9\\\\-_~;,]+))?' +\n // end\n '$'\n ),\n names: ['dir1', 'list1', 'dir2', 'list2'],\n format: function (o) {\n return 'simulcast:%s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // old simulcast draft 03 (implemented by Firefox)\n // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-03\n // a=simulcast: recv pt=97;98 send pt=97\n // a=simulcast: send rid=5;6;7 paused=6,7\n name: 'simulcast_03',\n reg: /^simulcast:[\\s\\t]+([\\S+\\s\\t]+)$/,\n names: ['value'],\n format: 'simulcast: %s'\n },\n {\n // a=framerate:25\n // a=framerate:29.97\n name: 'framerate',\n reg: /^framerate:(\\d+(?:$|\\.\\d+))/,\n format: 'framerate:%s'\n },\n {\n // RFC4570\n // a=source-filter: incl IN IP4 239.5.2.31 10.1.15.5\n name: 'sourceFilter',\n reg: /^source-filter: *(excl|incl) (\\S*) (IP4|IP6|\\*) (\\S*) (.*)/,\n names: ['filterMode', 'netType', 'addressTypes', 'destAddress', 'srcList'],\n format: 'source-filter: %s %s %s %s %s'\n },\n {\n // a=bundle-only\n name: 'bundleOnly',\n reg: /^(bundle-only)/\n },\n {\n // a=label:1\n name: 'label',\n reg: /^label:(.+)/,\n format: 'label:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-5\n name: 'sctpPort',\n reg: /^sctp-port:(\\d+)$/,\n format: 'sctp-port:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-6\n name: 'maxMessageSize',\n reg: /^max-message-size:(\\d+)$/,\n format: 'max-message-size:%s'\n },\n {\n // RFC7273\n // a=ts-refclk:ptp=IEEE1588-2008:39-A7-94-FF-FE-07-CB-D0:37\n push:'tsRefClocks',\n reg: /^ts-refclk:([^\\s=]*)(?:=(\\S*))?/,\n names: ['clksrc', 'clksrcExt'],\n format: function (o) {\n return 'ts-refclk:%s' + (o.clksrcExt != null ? '=%s' : '');\n }\n },\n {\n // RFC7273\n // a=mediaclk:direct=963214424\n name:'mediaClk',\n reg: /^mediaclk:(?:id=(\\S*))? *([^\\s=]*)(?:=(\\S*))?(?: *rate=(\\d+)\\/(\\d+))?/,\n names: ['id', 'mediaClockName', 'mediaClockValue', 'rateNumerator', 'rateDenominator'],\n format: function (o) {\n var str = 'mediaclk:';\n str += (o.id != null ? 'id=%s %s' : '%v%s');\n str += (o.mediaClockValue != null ? '=%s' : '');\n str += (o.rateNumerator != null ? ' rate=%s' : '');\n str += (o.rateDenominator != null ? '/%s' : '');\n return str;\n }\n },\n {\n // a=keywds:keywords\n name: 'keywords',\n reg: /^keywds:(.+)$/,\n format: 'keywds:%s'\n },\n {\n // a=content:main\n name: 'content',\n reg: /^content:(.+)/,\n format: 'content:%s'\n },\n // BFCP https://tools.ietf.org/html/rfc4583\n {\n // a=floorctrl:c-s\n name: 'bfcpFloorCtrl',\n reg: /^floorctrl:(c-only|s-only|c-s)/,\n format: 'floorctrl:%s'\n },\n {\n // a=confid:1\n name: 'bfcpConfId',\n reg: /^confid:(\\d+)/,\n format: 'confid:%s'\n },\n {\n // a=userid:1\n name: 'bfcpUserId',\n reg: /^userid:(\\d+)/,\n format: 'userid:%s'\n },\n {\n // a=floorid:1\n name: 'bfcpFloorId',\n reg: /^floorid:(.+) (?:m-stream|mstrm):(.+)/,\n names: ['id', 'mStream'],\n format: 'floorid:%s mstrm:%s'\n },\n {\n // any a= that we don't understand is kept verbatim on media.invalid\n push: 'invalid',\n names: ['value']\n }\n ]\n};\n\n// set sensible defaults to avoid polluting the grammar with boring details\nObject.keys(grammar).forEach(function (key) {\n var objs = grammar[key];\n objs.forEach(function (obj) {\n if (!obj.reg) {\n obj.reg = /(.*)/;\n }\n if (!obj.format) {\n obj.format = '%s';\n }\n });\n});\n","var toIntIfInt = function (v) {\n return String(Number(v)) === v ? Number(v) : v;\n};\n\nvar attachProperties = function (match, location, names, rawName) {\n if (rawName && !names) {\n location[rawName] = toIntIfInt(match[1]);\n }\n else {\n for (var i = 0; i < names.length; i += 1) {\n if (match[i+1] != null) {\n location[names[i]] = toIntIfInt(match[i+1]);\n }\n }\n }\n};\n\nvar parseReg = function (obj, location, content) {\n var needsBlank = obj.name && obj.names;\n if (obj.push && !location[obj.push]) {\n location[obj.push] = [];\n }\n else if (needsBlank && !location[obj.name]) {\n location[obj.name] = {};\n }\n var keyLocation = obj.push ?\n {} : // blank object that will be pushed\n needsBlank ? location[obj.name] : location; // otherwise, named location or root\n\n attachProperties(content.match(obj.reg), keyLocation, obj.names, obj.name);\n\n if (obj.push) {\n location[obj.push].push(keyLocation);\n }\n};\n\nvar grammar = require('./grammar');\nvar validLine = RegExp.prototype.test.bind(/^([a-z])=(.*)/);\n\nexports.parse = function (sdp) {\n var session = {}\n , media = []\n , location = session; // points at where properties go under (one of the above)\n\n // parse lines we understand\n sdp.split(/(\\r\\n|\\r|\\n)/).filter(validLine).forEach(function (l) {\n var type = l[0];\n var content = l.slice(2);\n if (type === 'm') {\n media.push({rtp: [], fmtp: []});\n location = media[media.length-1]; // point at latest media line\n }\n\n for (var j = 0; j < (grammar[type] || []).length; j += 1) {\n var obj = grammar[type][j];\n if (obj.reg.test(content)) {\n return parseReg(obj, location, content);\n }\n }\n });\n\n session.media = media; // link it up\n return session;\n};\n\nvar paramReducer = function (acc, expr) {\n var s = expr.split(/=(.+)/, 2);\n if (s.length === 2) {\n acc[s[0]] = toIntIfInt(s[1]);\n } else if (s.length === 1 && expr.length > 1) {\n acc[s[0]] = undefined;\n }\n return acc;\n};\n\nexports.parseParams = function (str) {\n return str.split(/;\\s?/).reduce(paramReducer, {});\n};\n\n// For backward compatibility - alias will be removed in 3.0.0\nexports.parseFmtpConfig = exports.parseParams;\n\nexports.parsePayloads = function (str) {\n return str.toString().split(' ').map(Number);\n};\n\nexports.parseRemoteCandidates = function (str) {\n var candidates = [];\n var parts = str.split(' ').map(toIntIfInt);\n for (var i = 0; i < parts.length; i += 3) {\n candidates.push({\n component: parts[i],\n ip: parts[i + 1],\n port: parts[i + 2]\n });\n }\n return candidates;\n};\n\nexports.parseImageAttributes = function (str) {\n return str.split(' ').map(function (item) {\n return item.substring(1, item.length-1).split(',').reduce(paramReducer, {});\n });\n};\n\nexports.parseSimulcastStreamList = function (str) {\n return str.split(';').map(function (stream) {\n return stream.split(',').map(function (format) {\n var scid, paused = false;\n\n if (format[0] !== '~') {\n scid = toIntIfInt(format);\n } else {\n scid = toIntIfInt(format.substring(1, format.length));\n paused = true;\n }\n\n return {\n scid: scid,\n paused: paused\n };\n });\n });\n};\n","var grammar = require('./grammar');\n\n// customized util.format - discards excess arguments and can void middle ones\nvar formatRegExp = /%[sdv%]/g;\nvar format = function (formatStr) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n return formatStr.replace(formatRegExp, function (x) {\n if (i >= len) {\n return x; // missing argument\n }\n var arg = args[i];\n i += 1;\n switch (x) {\n case '%%':\n return '%';\n case '%s':\n return String(arg);\n case '%d':\n return Number(arg);\n case '%v':\n return '';\n }\n });\n // NB: we discard excess arguments - they are typically undefined from makeLine\n};\n\nvar makeLine = function (type, obj, location) {\n var str = obj.format instanceof Function ?\n (obj.format(obj.push ? location : location[obj.name])) :\n obj.format;\n\n var args = [type + '=' + str];\n if (obj.names) {\n for (var i = 0; i < obj.names.length; i += 1) {\n var n = obj.names[i];\n if (obj.name) {\n args.push(location[obj.name][n]);\n }\n else { // for mLine and push attributes\n args.push(location[obj.names[i]]);\n }\n }\n }\n else {\n args.push(location[obj.name]);\n }\n return format.apply(null, args);\n};\n\n// RFC specified order\n// TODO: extend this with all the rest\nvar defaultOuterOrder = [\n 'v', 'o', 's', 'i',\n 'u', 'e', 'p', 'c',\n 'b', 't', 'r', 'z', 'a'\n];\nvar defaultInnerOrder = ['i', 'c', 'b', 'a'];\n\n\nmodule.exports = function (session, opts) {\n opts = opts || {};\n // ensure certain properties exist\n if (session.version == null) {\n session.version = 0; // 'v=0' must be there (only defined version atm)\n }\n if (session.name == null) {\n session.name = ' '; // 's= ' must be there if no meaningful name set\n }\n session.media.forEach(function (mLine) {\n if (mLine.payloads == null) {\n mLine.payloads = '';\n }\n });\n\n var outerOrder = opts.outerOrder || defaultOuterOrder;\n var innerOrder = opts.innerOrder || defaultInnerOrder;\n var sdp = [];\n\n // loop through outerOrder for matching properties on session\n outerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in session && session[obj.name] != null) {\n sdp.push(makeLine(type, obj, session));\n }\n else if (obj.push in session && session[obj.push] != null) {\n session[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n\n // then for each media line, follow the innerOrder\n session.media.forEach(function (mLine) {\n sdp.push(makeLine('m', grammar.m[0], mLine));\n\n innerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in mLine && mLine[obj.name] != null) {\n sdp.push(makeLine(type, obj, mLine));\n }\n else if (obj.push in mLine && mLine[obj.push] != null) {\n mLine[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n });\n\n return sdp.join('\\r\\n') + '\\r\\n';\n};\n","var parser = require('./parser');\nvar writer = require('./writer');\nvar grammar = require('./grammar');\n\nexports.grammar = grammar;\nexports.write = writer;\nexports.parse = parser.parse;\nexports.parseParams = parser.parseParams;\nexports.parseFmtpConfig = parser.parseFmtpConfig; // Alias of parseParams().\nexports.parsePayloads = parser.parsePayloads;\nexports.parseRemoteCandidates = parser.parseRemoteCandidates;\nexports.parseImageAttributes = parser.parseImageAttributes;\nexports.parseSimulcastStreamList = parser.parseSimulcastStreamList;\n","import { EventEmitter } from 'events';\nimport type { MediaDescription, SessionDescription } from 'sdp-transform';\nimport { parse, write } from 'sdp-transform';\nimport { debounce } from 'ts-debounce';\nimport log, { LoggerNames, getLogger } from '../logger';\nimport { NegotiationError, UnexpectedConnectionState } from './errors';\nimport type { LoggerOptions } from './types';\nimport { ddExtensionURI, isSVCCodec } from './utils';\n\n/** @internal */\ninterface TrackBitrateInfo {\n cid?: string;\n transceiver?: RTCRtpTransceiver;\n codec: string;\n maxbr: number;\n}\n\n/* The svc codec (av1/vp9) would use a very low bitrate at the begining and\nincrease slowly by the bandwidth estimator until it reach the target bitrate. The\nprocess commonly cost more than 10 seconds cause subscriber will get blur video at\nthe first few seconds. So we use a 70% of target bitrate here as the start bitrate to\neliminate this issue.\n*/\nconst startBitrateForSVC = 0.7;\n\nconst debounceInterval = 20;\n\nexport const PCEvents = {\n NegotiationStarted: 'negotiationStarted',\n NegotiationComplete: 'negotiationComplete',\n RTPVideoPayloadTypes: 'rtpVideoPayloadTypes',\n} as const;\n\n/** @internal */\nexport default class PCTransport extends EventEmitter {\n private _pc: RTCPeerConnection | null;\n\n private get pc() {\n if (!this._pc) {\n this._pc = this.createPC();\n }\n return this._pc;\n }\n\n private config?: RTCConfiguration;\n\n private log = log;\n\n private loggerOptions: LoggerOptions;\n\n private ddExtID = 0;\n\n pendingCandidates: RTCIceCandidateInit[] = [];\n\n restartingIce: boolean = false;\n\n renegotiate: boolean = false;\n\n trackBitrates: TrackBitrateInfo[] = [];\n\n remoteStereoMids: string[] = [];\n\n remoteNackMids: string[] = [];\n\n onOffer?: (offer: RTCSessionDescriptionInit) => void;\n\n onIceCandidate?: (candidate: RTCIceCandidate) => void;\n\n onIceCandidateError?: (ev: Event) => void;\n\n onConnectionStateChange?: (state: RTCPeerConnectionState) => void;\n\n onIceConnectionStateChange?: (state: RTCIceConnectionState) => void;\n\n onSignalingStatechange?: (state: RTCSignalingState) => void;\n\n onDataChannel?: (ev: RTCDataChannelEvent) => void;\n\n onTrack?: (ev: RTCTrackEvent) => void;\n\n constructor(config?: RTCConfiguration, loggerOptions: LoggerOptions = {}) {\n super();\n this.log = getLogger(loggerOptions.loggerName ?? LoggerNames.PCTransport);\n this.loggerOptions = loggerOptions;\n this.config = config;\n this._pc = this.createPC();\n }\n\n private createPC() {\n const pc = new RTCPeerConnection(this.config);\n\n pc.onicecandidate = (ev) => {\n if (!ev.candidate) return;\n this.onIceCandidate?.(ev.candidate);\n };\n pc.onicecandidateerror = (ev) => {\n this.onIceCandidateError?.(ev);\n };\n\n pc.oniceconnectionstatechange = () => {\n this.onIceConnectionStateChange?.(pc.iceConnectionState);\n };\n\n pc.onsignalingstatechange = () => {\n this.onSignalingStatechange?.(pc.signalingState);\n };\n\n pc.onconnectionstatechange = () => {\n this.onConnectionStateChange?.(pc.connectionState);\n };\n pc.ondatachannel = (ev) => {\n this.onDataChannel?.(ev);\n };\n pc.ontrack = (ev) => {\n this.onTrack?.(ev);\n };\n return pc;\n }\n\n private get logContext() {\n return {\n ...this.loggerOptions.loggerContextCb?.(),\n };\n }\n\n get isICEConnected(): boolean {\n return (\n this._pc !== null &&\n (this.pc.iceConnectionState === 'connected' || this.pc.iceConnectionState === 'completed')\n );\n }\n\n async addIceCandidate(candidate: RTCIceCandidateInit): Promise {\n if (this.pc.remoteDescription && !this.restartingIce) {\n return this.pc.addIceCandidate(candidate);\n }\n this.pendingCandidates.push(candidate);\n }\n\n async setRemoteDescription(sd: RTCSessionDescriptionInit): Promise {\n let mungedSDP: string | undefined = undefined;\n if (sd.type === 'offer') {\n let { stereoMids, nackMids } = extractStereoAndNackAudioFromOffer(sd);\n this.remoteStereoMids = stereoMids;\n this.remoteNackMids = nackMids;\n } else if (sd.type === 'answer') {\n const sdpParsed = parse(sd.sdp ?? '');\n sdpParsed.media.forEach((media) => {\n if (media.type === 'audio') {\n // mung sdp for opus bitrate settings\n this.trackBitrates.some((trackbr): boolean => {\n if (!trackbr.transceiver || media.mid != trackbr.transceiver.mid) {\n return false;\n }\n\n let codecPayload = 0;\n media.rtp.some((rtp): boolean => {\n if (rtp.codec.toUpperCase() === trackbr.codec.toUpperCase()) {\n codecPayload = rtp.payload;\n return true;\n }\n return false;\n });\n\n if (codecPayload === 0) {\n return true;\n }\n\n let fmtpFound = false;\n for (const fmtp of media.fmtp) {\n if (fmtp.payload === codecPayload) {\n fmtp.config = fmtp.config\n .split(';')\n .filter((attr) => !attr.includes('maxaveragebitrate'))\n .join(';');\n if (trackbr.maxbr > 0) {\n fmtp.config += `;maxaveragebitrate=${trackbr.maxbr * 1000}`;\n }\n fmtpFound = true;\n break;\n }\n }\n\n if (!fmtpFound) {\n if (trackbr.maxbr > 0) {\n media.fmtp.push({\n payload: codecPayload,\n config: `maxaveragebitrate=${trackbr.maxbr * 1000}`,\n });\n }\n }\n\n return true;\n });\n }\n });\n mungedSDP = write(sdpParsed);\n }\n await this.setMungedSDP(sd, mungedSDP, true);\n\n this.pendingCandidates.forEach((candidate) => {\n this.pc.addIceCandidate(candidate);\n });\n this.pendingCandidates = [];\n this.restartingIce = false;\n\n if (this.renegotiate) {\n this.renegotiate = false;\n await this.createAndSendOffer();\n } else if (sd.type === 'answer') {\n this.emit(PCEvents.NegotiationComplete);\n if (sd.sdp) {\n const sdpParsed = parse(sd.sdp);\n sdpParsed.media.forEach((media) => {\n if (media.type === 'video') {\n this.emit(PCEvents.RTPVideoPayloadTypes, media.rtp);\n }\n });\n }\n }\n }\n\n // debounced negotiate interface\n negotiate = debounce(async (onError?: (e: Error) => void) => {\n this.emit(PCEvents.NegotiationStarted);\n try {\n await this.createAndSendOffer();\n } catch (e) {\n if (onError) {\n onError(e as Error);\n } else {\n throw e;\n }\n }\n }, debounceInterval);\n\n async createAndSendOffer(options?: RTCOfferOptions) {\n if (this.onOffer === undefined) {\n return;\n }\n\n if (options?.iceRestart) {\n this.log.debug('restarting ICE', this.logContext);\n this.restartingIce = true;\n }\n\n if (this._pc && this._pc.signalingState === 'have-local-offer') {\n // we're waiting for the peer to accept our offer, so we'll just wait\n // the only exception to this is when ICE restart is needed\n const currentSD = this._pc.remoteDescription;\n if (options?.iceRestart && currentSD) {\n // TODO: handle when ICE restart is needed but we don't have a remote description\n // the best thing to do is to recreate the peerconnection\n await this._pc.setRemoteDescription(currentSD);\n } else {\n this.renegotiate = true;\n return;\n }\n } else if (!this._pc || this._pc.signalingState === 'closed') {\n this.log.warn('could not createOffer with closed peer connection', this.logContext);\n return;\n }\n\n // actually negotiate\n this.log.debug('starting to negotiate', this.logContext);\n const offer = await this.pc.createOffer(options);\n this.log.debug('original offer', { sdp: offer.sdp, ...this.logContext });\n\n const sdpParsed = parse(offer.sdp ?? '');\n sdpParsed.media.forEach((media) => {\n ensureIPAddrMatchVersion(media);\n if (media.type === 'audio') {\n ensureAudioNackAndStereo(media, [], []);\n } else if (media.type === 'video') {\n this.trackBitrates.some((trackbr): boolean => {\n if (!media.msid || !trackbr.cid || !media.msid.includes(trackbr.cid)) {\n return false;\n }\n\n let codecPayload = 0;\n media.rtp.some((rtp): boolean => {\n if (rtp.codec.toUpperCase() === trackbr.codec.toUpperCase()) {\n codecPayload = rtp.payload;\n return true;\n }\n return false;\n });\n\n if (codecPayload === 0) {\n return true;\n }\n\n if (isSVCCodec(trackbr.codec)) {\n this.ensureVideoDDExtensionForSVC(media, sdpParsed);\n }\n\n // TODO: av1 slow starting issue already fixed in chrome 124, clean this after some versions\n // mung sdp for av1 bitrate setting that can't apply by sendEncoding\n if (trackbr.codec !== 'av1') {\n return true;\n }\n\n const startBitrate = Math.round(trackbr.maxbr * startBitrateForSVC);\n\n for (const fmtp of media.fmtp) {\n if (fmtp.payload === codecPayload) {\n // if another track's fmtp already is set, we cannot override the bitrate\n // this has the unfortunate consequence of being forced to use the\n // initial track's bitrate for all tracks\n if (!fmtp.config.includes('x-google-start-bitrate')) {\n fmtp.config += `;x-google-start-bitrate=${startBitrate}`;\n }\n break;\n }\n }\n return true;\n });\n }\n });\n\n await this.setMungedSDP(offer, write(sdpParsed));\n this.onOffer(offer);\n }\n\n async createAndSetAnswer(): Promise {\n const answer = await this.pc.createAnswer();\n const sdpParsed = parse(answer.sdp ?? '');\n sdpParsed.media.forEach((media) => {\n ensureIPAddrMatchVersion(media);\n if (media.type === 'audio') {\n ensureAudioNackAndStereo(media, this.remoteStereoMids, this.remoteNackMids);\n }\n });\n await this.setMungedSDP(answer, write(sdpParsed));\n return answer;\n }\n\n createDataChannel(label: string, dataChannelDict: RTCDataChannelInit) {\n return this.pc.createDataChannel(label, dataChannelDict);\n }\n\n addTransceiver(mediaStreamTrack: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit) {\n return this.pc.addTransceiver(mediaStreamTrack, transceiverInit);\n }\n\n addTrack(track: MediaStreamTrack) {\n if (!this._pc) {\n throw new UnexpectedConnectionState('PC closed, cannot add track');\n }\n return this._pc.addTrack(track);\n }\n\n setTrackCodecBitrate(info: TrackBitrateInfo) {\n this.trackBitrates.push(info);\n }\n\n setConfiguration(rtcConfig: RTCConfiguration) {\n if (!this._pc) {\n throw new UnexpectedConnectionState('PC closed, cannot configure');\n }\n return this._pc?.setConfiguration(rtcConfig);\n }\n\n canRemoveTrack(): boolean {\n return !!this._pc?.removeTrack;\n }\n\n removeTrack(sender: RTCRtpSender) {\n return this._pc?.removeTrack(sender);\n }\n\n getConnectionState() {\n return this._pc?.connectionState ?? 'closed';\n }\n\n getICEConnectionState() {\n return this._pc?.iceConnectionState ?? 'closed';\n }\n\n getSignallingState() {\n return this._pc?.signalingState ?? 'closed';\n }\n\n getTransceivers() {\n return this._pc?.getTransceivers() ?? [];\n }\n\n getSenders() {\n return this._pc?.getSenders() ?? [];\n }\n\n getLocalDescription() {\n return this._pc?.localDescription;\n }\n\n getRemoteDescription() {\n return this.pc?.remoteDescription;\n }\n\n getStats() {\n return this.pc.getStats();\n }\n\n async getConnectedAddress(): Promise {\n if (!this._pc) {\n return;\n }\n let selectedCandidatePairId = '';\n const candidatePairs = new Map();\n // id -> candidate ip\n const candidates = new Map();\n const stats: RTCStatsReport = await this._pc.getStats();\n stats.forEach((v) => {\n switch (v.type) {\n case 'transport':\n selectedCandidatePairId = v.selectedCandidatePairId;\n break;\n case 'candidate-pair':\n if (selectedCandidatePairId === '' && v.selected) {\n selectedCandidatePairId = v.id;\n }\n candidatePairs.set(v.id, v);\n break;\n case 'remote-candidate':\n candidates.set(v.id, `${v.address}:${v.port}`);\n break;\n default:\n }\n });\n\n if (selectedCandidatePairId === '') {\n return undefined;\n }\n const selectedID = candidatePairs.get(selectedCandidatePairId)?.remoteCandidateId;\n if (selectedID === undefined) {\n return undefined;\n }\n return candidates.get(selectedID);\n }\n\n close = () => {\n if (!this._pc) {\n return;\n }\n this._pc.close();\n this._pc.onconnectionstatechange = null;\n this._pc.oniceconnectionstatechange = null;\n this._pc.onicegatheringstatechange = null;\n this._pc.ondatachannel = null;\n this._pc.onnegotiationneeded = null;\n this._pc.onsignalingstatechange = null;\n this._pc.onicecandidate = null;\n this._pc.ondatachannel = null;\n this._pc.ontrack = null;\n this._pc.onconnectionstatechange = null;\n this._pc.oniceconnectionstatechange = null;\n this._pc = null;\n };\n\n private async setMungedSDP(sd: RTCSessionDescriptionInit, munged?: string, remote?: boolean) {\n if (munged) {\n const originalSdp = sd.sdp;\n sd.sdp = munged;\n try {\n this.log.debug(\n `setting munged ${remote ? 'remote' : 'local'} description`,\n this.logContext,\n );\n if (remote) {\n await this.pc.setRemoteDescription(sd);\n } else {\n await this.pc.setLocalDescription(sd);\n }\n return;\n } catch (e) {\n this.log.warn(`not able to set ${sd.type}, falling back to unmodified sdp`, {\n ...this.logContext,\n error: e,\n sdp: munged,\n });\n sd.sdp = originalSdp;\n }\n }\n\n try {\n if (remote) {\n await this.pc.setRemoteDescription(sd);\n } else {\n await this.pc.setLocalDescription(sd);\n }\n } catch (e) {\n let msg = 'unknown error';\n if (e instanceof Error) {\n msg = e.message;\n } else if (typeof e === 'string') {\n msg = e;\n }\n\n const fields: any = {\n error: msg,\n sdp: sd.sdp,\n };\n if (!remote && this.pc.remoteDescription) {\n fields.remoteSdp = this.pc.remoteDescription;\n }\n this.log.error(`unable to set ${sd.type}`, { ...this.logContext, fields });\n throw new NegotiationError(msg);\n }\n }\n\n private ensureVideoDDExtensionForSVC(\n media: {\n type: string;\n port: number;\n protocol: string;\n payloads?: string | undefined;\n } & MediaDescription,\n sdp: SessionDescription,\n ) {\n const ddFound = media.ext?.some((ext): boolean => {\n if (ext.uri === ddExtensionURI) {\n return true;\n }\n return false;\n });\n\n if (!ddFound) {\n if (this.ddExtID === 0) {\n let maxID = 0;\n sdp.media.forEach((m) => {\n if (m.type !== 'video') {\n return;\n }\n m.ext?.forEach((ext) => {\n if (ext.value > maxID) {\n maxID = ext.value;\n }\n });\n });\n this.ddExtID = maxID + 1;\n }\n media.ext?.push({\n value: this.ddExtID,\n uri: ddExtensionURI,\n });\n }\n }\n}\n\nfunction ensureAudioNackAndStereo(\n media: {\n type: string;\n port: number;\n protocol: string;\n payloads?: string | undefined;\n } & MediaDescription,\n stereoMids: string[],\n nackMids: string[],\n) {\n // found opus codec to add nack fb\n let opusPayload = 0;\n media.rtp.some((rtp): boolean => {\n if (rtp.codec === 'opus') {\n opusPayload = rtp.payload;\n return true;\n }\n return false;\n });\n\n // add nack rtcpfb if not exist\n if (opusPayload > 0) {\n if (!media.rtcpFb) {\n media.rtcpFb = [];\n }\n\n if (\n nackMids.includes(media.mid!) &&\n !media.rtcpFb.some((fb) => fb.payload === opusPayload && fb.type === 'nack')\n ) {\n media.rtcpFb.push({\n payload: opusPayload,\n type: 'nack',\n });\n }\n\n if (stereoMids.includes(media.mid!)) {\n media.fmtp.some((fmtp): boolean => {\n if (fmtp.payload === opusPayload) {\n if (!fmtp.config.includes('stereo=1')) {\n fmtp.config += ';stereo=1';\n }\n return true;\n }\n return false;\n });\n }\n }\n}\n\nfunction extractStereoAndNackAudioFromOffer(offer: RTCSessionDescriptionInit): {\n stereoMids: string[];\n nackMids: string[];\n} {\n const stereoMids: string[] = [];\n const nackMids: string[] = [];\n const sdpParsed = parse(offer.sdp ?? '');\n let opusPayload = 0;\n sdpParsed.media.forEach((media) => {\n if (media.type === 'audio') {\n media.rtp.some((rtp): boolean => {\n if (rtp.codec === 'opus') {\n opusPayload = rtp.payload;\n return true;\n }\n return false;\n });\n\n if (media.rtcpFb?.some((fb) => fb.payload === opusPayload && fb.type === 'nack')) {\n nackMids.push(media.mid!);\n }\n\n media.fmtp.some((fmtp): boolean => {\n if (fmtp.payload === opusPayload) {\n if (fmtp.config.includes('sprop-stereo=1')) {\n stereoMids.push(media.mid!);\n }\n return true;\n }\n return false;\n });\n }\n });\n return { stereoMids, nackMids };\n}\n\nfunction ensureIPAddrMatchVersion(media: MediaDescription) {\n // Chrome could generate sdp with c = IN IP4 \n // in edge case and return error when set sdp.This is not a\n // sdk error but correct it if the issue detected.\n if (media.connection) {\n const isV6 = media.connection.ip.indexOf(':') >= 0;\n if ((media.connection.version === 4 && isV6) || (media.connection.version === 6 && !isV6)) {\n // fallback to dummy address\n media.connection.ip = '0.0.0.0';\n media.connection.version = 4;\n }\n }\n}\n","import type { InternalRoomConnectOptions, InternalRoomOptions } from '../options';\nimport DefaultReconnectPolicy from './DefaultReconnectPolicy';\nimport type {\n AudioCaptureOptions,\n TrackPublishDefaults,\n VideoCaptureOptions,\n} from './track/options';\nimport { AudioPresets, ScreenSharePresets, VideoPresets } from './track/options';\n\nexport const defaultVideoCodec = 'vp8';\n\nexport const publishDefaults: TrackPublishDefaults = {\n audioPreset: AudioPresets.music,\n dtx: true,\n red: true,\n forceStereo: false,\n simulcast: true,\n screenShareEncoding: ScreenSharePresets.h1080fps15.encoding,\n stopMicTrackOnMute: false,\n videoCodec: defaultVideoCodec,\n backupCodec: true,\n} as const;\n\nexport const audioDefaults: AudioCaptureOptions = {\n deviceId: 'default',\n autoGainControl: true,\n echoCancellation: true,\n noiseSuppression: true,\n voiceIsolation: true,\n};\n\nexport const videoDefaults: VideoCaptureOptions = {\n deviceId: 'default',\n resolution: VideoPresets.h720.resolution,\n};\n\nexport const roomOptionDefaults: InternalRoomOptions = {\n adaptiveStream: false,\n dynacast: false,\n stopLocalTrackOnUnpublish: true,\n reconnectPolicy: new DefaultReconnectPolicy(),\n disconnectOnPageLeave: true,\n webAudioMix: false,\n} as const;\n\nexport const roomConnectOptionDefaults: InternalRoomConnectOptions = {\n autoSubscribe: true,\n maxRetries: 1,\n peerConnectionTimeout: 15_000,\n websocketTimeout: 15_000,\n} as const;\n","import { Mutex } from '@livekit/mutex';\nimport { SignalTarget } from '@livekit/protocol';\nimport log, { LoggerNames, getLogger } from '../logger';\nimport PCTransport, { PCEvents } from './PCTransport';\nimport { roomConnectOptionDefaults } from './defaults';\nimport { ConnectionError, ConnectionErrorReason } from './errors';\nimport CriticalTimers from './timers';\nimport type { LoggerOptions } from './types';\nimport { sleep } from './utils';\n\nexport enum PCTransportState {\n NEW,\n CONNECTING,\n CONNECTED,\n FAILED,\n CLOSING,\n CLOSED,\n}\n\nexport class PCTransportManager {\n public publisher: PCTransport;\n\n public subscriber: PCTransport;\n\n public peerConnectionTimeout: number = roomConnectOptionDefaults.peerConnectionTimeout;\n\n public get needsPublisher() {\n return this.isPublisherConnectionRequired;\n }\n\n public get needsSubscriber() {\n return this.isSubscriberConnectionRequired;\n }\n\n public get currentState() {\n return this.state;\n }\n\n public onStateChange?: (\n state: PCTransportState,\n pubState: RTCPeerConnectionState,\n subState: RTCPeerConnectionState,\n ) => void;\n\n public onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void;\n\n public onDataChannel?: (ev: RTCDataChannelEvent) => void;\n\n public onTrack?: (ev: RTCTrackEvent) => void;\n\n public onPublisherOffer?: (offer: RTCSessionDescriptionInit) => void;\n\n private isPublisherConnectionRequired: boolean;\n\n private isSubscriberConnectionRequired: boolean;\n\n private state: PCTransportState;\n\n private connectionLock: Mutex;\n\n private remoteOfferLock: Mutex;\n\n private log = log;\n\n private loggerOptions: LoggerOptions;\n\n constructor(\n rtcConfig: RTCConfiguration,\n subscriberPrimary: boolean,\n loggerOptions: LoggerOptions,\n ) {\n this.log = getLogger(loggerOptions.loggerName ?? LoggerNames.PCManager);\n this.loggerOptions = loggerOptions;\n\n this.isPublisherConnectionRequired = !subscriberPrimary;\n this.isSubscriberConnectionRequired = subscriberPrimary;\n this.publisher = new PCTransport(rtcConfig, loggerOptions);\n this.subscriber = new PCTransport(rtcConfig, loggerOptions);\n\n this.publisher.onConnectionStateChange = this.updateState;\n this.subscriber.onConnectionStateChange = this.updateState;\n this.publisher.onIceConnectionStateChange = this.updateState;\n this.subscriber.onIceConnectionStateChange = this.updateState;\n this.publisher.onSignalingStatechange = this.updateState;\n this.subscriber.onSignalingStatechange = this.updateState;\n this.publisher.onIceCandidate = (candidate) => {\n this.onIceCandidate?.(candidate, SignalTarget.PUBLISHER);\n };\n this.subscriber.onIceCandidate = (candidate) => {\n this.onIceCandidate?.(candidate, SignalTarget.SUBSCRIBER);\n };\n // in subscriber primary mode, server side opens sub data channels.\n this.subscriber.onDataChannel = (ev) => {\n this.onDataChannel?.(ev);\n };\n this.subscriber.onTrack = (ev) => {\n this.onTrack?.(ev);\n };\n this.publisher.onOffer = (offer) => {\n this.onPublisherOffer?.(offer);\n };\n\n this.state = PCTransportState.NEW;\n\n this.connectionLock = new Mutex();\n this.remoteOfferLock = new Mutex();\n }\n\n private get logContext() {\n return {\n ...this.loggerOptions.loggerContextCb?.(),\n };\n }\n\n requirePublisher(require = true) {\n this.isPublisherConnectionRequired = require;\n this.updateState();\n }\n\n requireSubscriber(require = true) {\n this.isSubscriberConnectionRequired = require;\n this.updateState();\n }\n\n createAndSendPublisherOffer(options?: RTCOfferOptions) {\n return this.publisher.createAndSendOffer(options);\n }\n\n setPublisherAnswer(sd: RTCSessionDescriptionInit) {\n return this.publisher.setRemoteDescription(sd);\n }\n\n removeTrack(sender: RTCRtpSender) {\n return this.publisher.removeTrack(sender);\n }\n\n async close() {\n if (this.publisher && this.publisher.getSignallingState() !== 'closed') {\n const publisher = this.publisher;\n for (const sender of publisher.getSenders()) {\n try {\n // TODO: react-native-webrtc doesn't have removeTrack yet.\n if (publisher.canRemoveTrack()) {\n publisher.removeTrack(sender);\n }\n } catch (e) {\n this.log.warn('could not removeTrack', { ...this.logContext, error: e });\n }\n }\n }\n await Promise.all([this.publisher.close(), this.subscriber.close()]);\n this.updateState();\n }\n\n async triggerIceRestart() {\n this.subscriber.restartingIce = true;\n // only restart publisher if it's needed\n if (this.needsPublisher) {\n await this.createAndSendPublisherOffer({ iceRestart: true });\n }\n }\n\n async addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget) {\n if (target === SignalTarget.PUBLISHER) {\n await this.publisher.addIceCandidate(candidate);\n } else {\n await this.subscriber.addIceCandidate(candidate);\n }\n }\n\n async createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit) {\n this.log.debug('received server offer', {\n ...this.logContext,\n RTCSdpType: sd.type,\n sdp: sd.sdp,\n signalingState: this.subscriber.getSignallingState().toString(),\n });\n const unlock = await this.remoteOfferLock.lock();\n try {\n await this.subscriber.setRemoteDescription(sd);\n\n // answer the offer\n const answer = await this.subscriber.createAndSetAnswer();\n return answer;\n } finally {\n unlock();\n }\n }\n\n updateConfiguration(config: RTCConfiguration, iceRestart?: boolean) {\n this.publisher.setConfiguration(config);\n this.subscriber.setConfiguration(config);\n if (iceRestart) {\n this.triggerIceRestart();\n }\n }\n\n async ensurePCTransportConnection(abortController?: AbortController, timeout?: number) {\n const unlock = await this.connectionLock.lock();\n try {\n if (\n this.isPublisherConnectionRequired &&\n this.publisher.getConnectionState() !== 'connected' &&\n this.publisher.getConnectionState() !== 'connecting'\n ) {\n this.log.debug('negotiation required, start negotiating', this.logContext);\n this.publisher.negotiate();\n }\n await Promise.all(\n this.requiredTransports?.map((transport) =>\n this.ensureTransportConnected(transport, abortController, timeout),\n ),\n );\n } finally {\n unlock();\n }\n }\n\n async negotiate(abortController: AbortController) {\n return new Promise(async (resolve, reject) => {\n const negotiationTimeout = setTimeout(() => {\n reject('negotiation timed out');\n }, this.peerConnectionTimeout);\n\n const abortHandler = () => {\n clearTimeout(negotiationTimeout);\n reject('negotiation aborted');\n };\n\n abortController.signal.addEventListener('abort', abortHandler);\n this.publisher.once(PCEvents.NegotiationStarted, () => {\n if (abortController.signal.aborted) {\n return;\n }\n this.publisher.once(PCEvents.NegotiationComplete, () => {\n clearTimeout(negotiationTimeout);\n resolve();\n });\n });\n\n await this.publisher.negotiate((e) => {\n clearTimeout(negotiationTimeout);\n reject(e);\n });\n });\n }\n\n addPublisherTransceiver(track: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit) {\n return this.publisher.addTransceiver(track, transceiverInit);\n }\n\n addPublisherTrack(track: MediaStreamTrack) {\n return this.publisher.addTrack(track);\n }\n\n createPublisherDataChannel(label: string, dataChannelDict: RTCDataChannelInit) {\n return this.publisher.createDataChannel(label, dataChannelDict);\n }\n\n /**\n * Returns the first required transport's address if no explicit target is specified\n */\n getConnectedAddress(target?: SignalTarget) {\n if (target === SignalTarget.PUBLISHER) {\n return this.publisher.getConnectedAddress();\n } else if (target === SignalTarget.SUBSCRIBER) {\n return this.publisher.getConnectedAddress();\n }\n return this.requiredTransports[0].getConnectedAddress();\n }\n\n private get requiredTransports() {\n const transports: PCTransport[] = [];\n if (this.isPublisherConnectionRequired) {\n transports.push(this.publisher);\n }\n if (this.isSubscriberConnectionRequired) {\n transports.push(this.subscriber);\n }\n return transports;\n }\n\n private updateState = () => {\n const previousState = this.state;\n\n const connectionStates = this.requiredTransports.map((tr) => tr.getConnectionState());\n if (connectionStates.every((st) => st === 'connected')) {\n this.state = PCTransportState.CONNECTED;\n } else if (connectionStates.some((st) => st === 'failed')) {\n this.state = PCTransportState.FAILED;\n } else if (connectionStates.some((st) => st === 'connecting')) {\n this.state = PCTransportState.CONNECTING;\n } else if (connectionStates.every((st) => st === 'closed')) {\n this.state = PCTransportState.CLOSED;\n } else if (connectionStates.some((st) => st === 'closed')) {\n this.state = PCTransportState.CLOSING;\n } else if (connectionStates.every((st) => st === 'new')) {\n this.state = PCTransportState.NEW;\n }\n\n if (previousState !== this.state) {\n this.log.debug(\n `pc state change: from ${PCTransportState[previousState]} to ${\n PCTransportState[this.state]\n }`,\n this.logContext,\n );\n this.onStateChange?.(\n this.state,\n this.publisher.getConnectionState(),\n this.subscriber.getConnectionState(),\n );\n }\n };\n\n private async ensureTransportConnected(\n pcTransport: PCTransport,\n abortController?: AbortController,\n timeout: number = this.peerConnectionTimeout,\n ) {\n const connectionState = pcTransport.getConnectionState();\n if (connectionState === 'connected') {\n return;\n }\n\n return new Promise(async (resolve, reject) => {\n const abortHandler = () => {\n this.log.warn('abort transport connection', this.logContext);\n CriticalTimers.clearTimeout(connectTimeout);\n\n reject(\n new ConnectionError(\n 'room connection has been cancelled',\n ConnectionErrorReason.Cancelled,\n ),\n );\n };\n if (abortController?.signal.aborted) {\n abortHandler();\n }\n abortController?.signal.addEventListener('abort', abortHandler);\n\n const connectTimeout = CriticalTimers.setTimeout(() => {\n abortController?.signal.removeEventListener('abort', abortHandler);\n reject(\n new ConnectionError(\n 'could not establish pc connection',\n ConnectionErrorReason.InternalError,\n ),\n );\n }, timeout);\n\n while (this.state !== PCTransportState.CONNECTED) {\n await sleep(50); // FIXME we shouldn't rely on `sleep` in the connection paths, as it invokes `setTimeout` which can be drastically throttled by browser implementations\n if (abortController?.signal.aborted) {\n reject(\n new ConnectionError(\n 'room connection has been cancelled',\n ConnectionErrorReason.Cancelled,\n ),\n );\n return;\n }\n }\n CriticalTimers.clearTimeout(connectTimeout);\n abortController?.signal.removeEventListener('abort', abortHandler);\n resolve();\n });\n }\n}\n","export const monitorFrequency = 2000;\n\n// key stats for senders and receivers\ninterface SenderStats {\n /** number of packets sent */\n packetsSent?: number;\n\n /** number of bytes sent */\n bytesSent?: number;\n\n /** jitter as perceived by remote */\n jitter?: number;\n\n /** packets reported lost by remote */\n packetsLost?: number;\n\n /** RTT reported by remote */\n roundTripTime?: number;\n\n /** ID of the outbound stream */\n streamId?: string;\n\n timestamp: number;\n}\n\nexport interface AudioSenderStats extends SenderStats {\n type: 'audio';\n}\n\nexport interface VideoSenderStats extends SenderStats {\n type: 'video';\n\n firCount: number;\n\n pliCount: number;\n\n nackCount: number;\n\n rid: string;\n\n frameWidth: number;\n\n frameHeight: number;\n\n framesPerSecond: number;\n\n framesSent: number;\n\n // bandwidth, cpu, other, none\n qualityLimitationReason?: string;\n\n qualityLimitationDurations?: Record;\n\n qualityLimitationResolutionChanges?: number;\n\n retransmittedPacketsSent?: number;\n\n targetBitrate: number;\n}\n\ninterface ReceiverStats {\n jitterBufferDelay?: number;\n\n /** packets reported lost by remote */\n packetsLost?: number;\n\n /** number of packets sent */\n packetsReceived?: number;\n\n bytesReceived?: number;\n\n streamId?: string;\n\n jitter?: number;\n\n timestamp: number;\n}\n\nexport interface AudioReceiverStats extends ReceiverStats {\n type: 'audio';\n\n concealedSamples?: number;\n\n concealmentEvents?: number;\n\n silentConcealedSamples?: number;\n\n silentConcealmentEvents?: number;\n\n totalAudioEnergy?: number;\n\n totalSamplesDuration?: number;\n}\n\nexport interface VideoReceiverStats extends ReceiverStats {\n type: 'video';\n\n framesDecoded: number;\n\n framesDropped: number;\n\n framesReceived: number;\n\n frameWidth?: number;\n\n frameHeight?: number;\n\n firCount?: number;\n\n pliCount?: number;\n\n nackCount?: number;\n\n decoderImplementation?: string;\n\n mimeType?: string;\n}\n\nexport function computeBitrate(\n currentStats: T,\n prevStats?: T,\n): number {\n if (!prevStats) {\n return 0;\n }\n let bytesNow: number | undefined;\n let bytesPrev: number | undefined;\n if ('bytesReceived' in currentStats) {\n bytesNow = (currentStats as ReceiverStats).bytesReceived;\n bytesPrev = (prevStats as ReceiverStats).bytesReceived;\n } else if ('bytesSent' in currentStats) {\n bytesNow = (currentStats as SenderStats).bytesSent;\n bytesPrev = (prevStats as SenderStats).bytesSent;\n }\n if (\n bytesNow === undefined ||\n bytesPrev === undefined ||\n currentStats.timestamp === undefined ||\n prevStats.timestamp === undefined\n ) {\n return 0;\n }\n return ((bytesNow - bytesPrev) * 8 * 1000) / (currentStats.timestamp - prevStats.timestamp);\n}\n","import { AudioTrackFeature } from '@livekit/protocol';\nimport { TrackEvent } from '../events';\nimport { computeBitrate, monitorFrequency } from '../stats';\nimport type { AudioSenderStats } from '../stats';\nimport type { LoggerOptions } from '../types';\nimport { isWeb, unwrapConstraint } from '../utils';\nimport LocalTrack from './LocalTrack';\nimport { Track } from './Track';\nimport type { AudioCaptureOptions } from './options';\nimport type { AudioProcessorOptions, TrackProcessor } from './processor/types';\nimport { constraintsForOptions, detectSilence } from './utils';\n\nexport default class LocalAudioTrack extends LocalTrack {\n /** @internal */\n stopOnMute: boolean = false;\n\n private prevStats?: AudioSenderStats;\n\n private isKrispNoiseFilterEnabled = false;\n\n protected processor?: TrackProcessor | undefined;\n\n /**\n * boolean indicating whether enhanced noise cancellation is currently being used on this track\n */\n get enhancedNoiseCancellation() {\n return this.isKrispNoiseFilterEnabled;\n }\n\n /**\n *\n * @param mediaTrack\n * @param constraints MediaTrackConstraints that are being used when restarting or reacquiring tracks\n * @param userProvidedTrack Signals to the SDK whether or not the mediaTrack should be managed (i.e. released and reacquired) internally by the SDK\n */\n constructor(\n mediaTrack: MediaStreamTrack,\n constraints?: MediaTrackConstraints,\n userProvidedTrack = true,\n audioContext?: AudioContext,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, Track.Kind.Audio, constraints, userProvidedTrack, loggerOptions);\n this.audioContext = audioContext;\n this.checkForSilence();\n }\n\n async mute(): Promise {\n const unlock = await this.muteLock.lock();\n try {\n if (this.isMuted) {\n this.log.debug('Track already muted', this.logContext);\n return this;\n }\n\n // disabled special handling as it will cause BT headsets to switch communication modes\n if (this.source === Track.Source.Microphone && this.stopOnMute && !this.isUserProvided) {\n this.log.debug('stopping mic track', this.logContext);\n // also stop the track, so that microphone indicator is turned off\n this._mediaStreamTrack.stop();\n }\n await super.mute();\n return this;\n } finally {\n unlock();\n }\n }\n\n async unmute(): Promise {\n const unlock = await this.muteLock.lock();\n try {\n if (!this.isMuted) {\n this.log.debug('Track already unmuted', this.logContext);\n return this;\n }\n\n const deviceHasChanged =\n this._constraints.deviceId &&\n this._mediaStreamTrack.getSettings().deviceId !==\n unwrapConstraint(this._constraints.deviceId);\n\n if (\n this.source === Track.Source.Microphone &&\n (this.stopOnMute || this._mediaStreamTrack.readyState === 'ended' || deviceHasChanged) &&\n !this.isUserProvided\n ) {\n this.log.debug('reacquiring mic track', this.logContext);\n await this.restartTrack();\n }\n await super.unmute();\n\n return this;\n } finally {\n unlock();\n }\n }\n\n async restartTrack(options?: AudioCaptureOptions) {\n let constraints: MediaTrackConstraints | undefined;\n if (options) {\n const streamConstraints = constraintsForOptions({ audio: options });\n if (typeof streamConstraints.audio !== 'boolean') {\n constraints = streamConstraints.audio;\n }\n }\n await this.restart(constraints);\n }\n\n protected async restart(constraints?: MediaTrackConstraints): Promise {\n const track = await super.restart(constraints);\n this.checkForSilence();\n return track;\n }\n\n /* @internal */\n startMonitor() {\n if (!isWeb()) {\n return;\n }\n if (this.monitorInterval) {\n return;\n }\n this.monitorInterval = setInterval(() => {\n this.monitorSender();\n }, monitorFrequency);\n }\n\n protected monitorSender = async () => {\n if (!this.sender) {\n this._currentBitrate = 0;\n return;\n }\n\n let stats: AudioSenderStats | undefined;\n try {\n stats = await this.getSenderStats();\n } catch (e) {\n this.log.error('could not get audio sender stats', { ...this.logContext, error: e });\n return;\n }\n\n if (stats && this.prevStats) {\n this._currentBitrate = computeBitrate(stats, this.prevStats);\n }\n\n this.prevStats = stats;\n };\n\n private handleKrispNoiseFilterEnable = () => {\n this.isKrispNoiseFilterEnabled = true;\n this.log.debug(`Krisp noise filter enabled`, this.logContext);\n this.emit(\n TrackEvent.AudioTrackFeatureUpdate,\n this,\n AudioTrackFeature.TF_ENHANCED_NOISE_CANCELLATION,\n true,\n );\n };\n\n private handleKrispNoiseFilterDisable = () => {\n this.isKrispNoiseFilterEnabled = false;\n this.log.debug(`Krisp noise filter disabled`, this.logContext);\n this.emit(\n TrackEvent.AudioTrackFeatureUpdate,\n this,\n AudioTrackFeature.TF_ENHANCED_NOISE_CANCELLATION,\n false,\n );\n };\n\n async setProcessor(processor: TrackProcessor) {\n const unlock = await this.processorLock.lock();\n try {\n if (!this.audioContext) {\n throw Error(\n 'Audio context needs to be set on LocalAudioTrack in order to enable processors',\n );\n }\n if (this.processor) {\n await this.stopProcessor();\n }\n\n const processorOptions = {\n kind: this.kind,\n track: this._mediaStreamTrack,\n audioContext: this.audioContext,\n };\n this.log.debug(`setting up audio processor ${processor.name}`, this.logContext);\n\n await processor.init(processorOptions);\n this.processor = processor;\n if (this.processor.processedTrack) {\n await this.sender?.replaceTrack(this.processor.processedTrack);\n this.processor.processedTrack.addEventListener(\n 'enable-lk-krisp-noise-filter',\n this.handleKrispNoiseFilterEnable,\n );\n this.processor.processedTrack.addEventListener(\n 'disable-lk-krisp-noise-filter',\n this.handleKrispNoiseFilterDisable,\n );\n }\n this.emit(TrackEvent.TrackProcessorUpdate, this.processor);\n } finally {\n unlock();\n }\n }\n\n /**\n * @internal\n * @experimental\n */\n setAudioContext(audioContext: AudioContext | undefined) {\n this.audioContext = audioContext;\n }\n\n async getSenderStats(): Promise {\n if (!this.sender?.getStats) {\n return undefined;\n }\n\n const stats = await this.sender.getStats();\n let audioStats: AudioSenderStats | undefined;\n stats.forEach((v) => {\n if (v.type === 'outbound-rtp') {\n audioStats = {\n type: 'audio',\n streamId: v.id,\n packetsSent: v.packetsSent,\n packetsLost: v.packetsLost,\n bytesSent: v.bytesSent,\n timestamp: v.timestamp,\n roundTripTime: v.roundTripTime,\n jitter: v.jitter,\n };\n }\n });\n\n return audioStats;\n }\n\n async checkForSilence() {\n const trackIsSilent = await detectSilence(this);\n if (trackIsSilent) {\n if (!this.isMuted) {\n this.log.warn('silence detected on local audio track', this.logContext);\n }\n this.emit(TrackEvent.AudioSilenceDetected);\n }\n return trackIsSilent;\n }\n}\n","import log from '../../logger';\nimport { getBrowser } from '../../utils/browserParser';\nimport { TrackInvalidError } from '../errors';\nimport LocalAudioTrack from '../track/LocalAudioTrack';\nimport LocalVideoTrack from '../track/LocalVideoTrack';\nimport { Track } from '../track/Track';\nimport type {\n BackupVideoCodec,\n TrackPublishOptions,\n VideoCodec,\n VideoEncoding,\n} from '../track/options';\nimport { ScreenSharePresets, VideoPreset, VideoPresets, VideoPresets43 } from '../track/options';\nimport type { LoggerOptions } from '../types';\nimport {\n compareVersions,\n getReactNativeOs,\n isFireFox,\n isReactNative,\n isSVCCodec,\n isSafari,\n unwrapConstraint,\n} from '../utils';\n\n/** @internal */\nexport function mediaTrackToLocalTrack(\n mediaStreamTrack: MediaStreamTrack,\n constraints?: MediaTrackConstraints,\n loggerOptions?: LoggerOptions,\n): LocalVideoTrack | LocalAudioTrack {\n switch (mediaStreamTrack.kind) {\n case 'audio':\n return new LocalAudioTrack(mediaStreamTrack, constraints, false, undefined, loggerOptions);\n case 'video':\n return new LocalVideoTrack(mediaStreamTrack, constraints, false, loggerOptions);\n default:\n throw new TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);\n }\n}\n\n/* @internal */\nexport const presets169 = Object.values(VideoPresets);\n\n/* @internal */\nexport const presets43 = Object.values(VideoPresets43);\n\n/* @internal */\nexport const presetsScreenShare = Object.values(ScreenSharePresets);\n\n/* @internal */\nexport const defaultSimulcastPresets169 = [VideoPresets.h180, VideoPresets.h360];\n\n/* @internal */\nexport const defaultSimulcastPresets43 = [VideoPresets43.h180, VideoPresets43.h360];\n\n/* @internal */\nexport const computeDefaultScreenShareSimulcastPresets = (fromPreset: VideoPreset) => {\n const layers = [{ scaleResolutionDownBy: 2, fps: fromPreset.encoding.maxFramerate }];\n return layers.map(\n (t) =>\n new VideoPreset(\n Math.floor(fromPreset.width / t.scaleResolutionDownBy),\n Math.floor(fromPreset.height / t.scaleResolutionDownBy),\n Math.max(\n 150_000,\n Math.floor(\n fromPreset.encoding.maxBitrate /\n (t.scaleResolutionDownBy ** 2 *\n ((fromPreset.encoding.maxFramerate ?? 30) / (t.fps ?? 30))),\n ),\n ),\n t.fps,\n fromPreset.encoding.priority,\n ),\n );\n};\n\n// /**\n// *\n// * @internal\n// * @experimental\n// */\n// const computeDefaultMultiCodecSimulcastEncodings = (width: number, height: number) => {\n// // use vp8 as a default\n// const vp8 = determineAppropriateEncoding(false, width, height);\n// const vp9 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.9 };\n// const h264 = { ...vp8, maxBitrate: vp8.maxBitrate * 1.1 };\n// const av1 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.7 };\n// return {\n// vp8,\n// vp9,\n// h264,\n// av1,\n// };\n// };\n\nconst videoRids = ['q', 'h', 'f'];\n\n/* @internal */\nexport function computeVideoEncodings(\n isScreenShare: boolean,\n width?: number,\n height?: number,\n options?: TrackPublishOptions,\n): RTCRtpEncodingParameters[] {\n let videoEncoding: VideoEncoding | undefined = options?.videoEncoding;\n\n if (isScreenShare) {\n videoEncoding = options?.screenShareEncoding;\n }\n\n const useSimulcast = options?.simulcast;\n const scalabilityMode = options?.scalabilityMode;\n const videoCodec = options?.videoCodec;\n\n if ((!videoEncoding && !useSimulcast && !scalabilityMode) || !width || !height) {\n // when we aren't simulcasting or svc, will need to return a single encoding without\n // capping bandwidth. we always require a encoding for dynacast\n return [{}];\n }\n\n if (!videoEncoding) {\n // find the right encoding based on width/height\n videoEncoding = determineAppropriateEncoding(isScreenShare, width, height, videoCodec);\n log.debug('using video encoding', videoEncoding);\n }\n\n const sourceFramerate = videoEncoding.maxFramerate;\n\n const original = new VideoPreset(\n width,\n height,\n videoEncoding.maxBitrate,\n videoEncoding.maxFramerate,\n videoEncoding.priority,\n );\n\n if (scalabilityMode && isSVCCodec(videoCodec)) {\n const sm = new ScalabilityMode(scalabilityMode);\n\n const encodings: RTCRtpEncodingParameters[] = [];\n\n if (sm.spatial > 3) {\n throw new Error(`unsupported scalabilityMode: ${scalabilityMode}`);\n }\n // Before M113 in Chrome, defining multiple encodings with an SVC codec indicated\n // that SVC mode should be used. Safari still works this way.\n // This is a bit confusing but is due to how libwebrtc interpreted the encodings field\n // before M113.\n // Announced here: https://groups.google.com/g/discuss-webrtc/c/-QQ3pxrl-fw?pli=1\n const browser = getBrowser();\n if (\n isSafari() ||\n // Even tho RN runs M114, it does not produce SVC layers when a single encoding\n // is provided. So we'll use the legacy SVC specification for now.\n // TODO: when we upstream libwebrtc, this will need additional verification\n isReactNative() ||\n (browser?.name === 'Chrome' && compareVersions(browser?.version, '113') < 0)\n ) {\n const bitratesRatio = sm.suffix == 'h' ? 2 : 3;\n for (let i = 0; i < sm.spatial; i += 1) {\n // in legacy SVC, scaleResolutionDownBy cannot be set\n encodings.push({\n rid: videoRids[2 - i],\n maxBitrate: videoEncoding.maxBitrate / bitratesRatio ** i,\n maxFramerate: original.encoding.maxFramerate,\n });\n }\n // legacy SVC, scalabilityMode is set only on the first encoding\n /* @ts-ignore */\n encodings[0].scalabilityMode = scalabilityMode;\n } else {\n encodings.push({\n maxBitrate: videoEncoding.maxBitrate,\n maxFramerate: original.encoding.maxFramerate,\n /* @ts-ignore */\n scalabilityMode: scalabilityMode,\n });\n }\n\n if (original.encoding.priority) {\n encodings[0].priority = original.encoding.priority;\n encodings[0].networkPriority = original.encoding.priority;\n }\n\n log.debug(`using svc encoding`, { encodings });\n return encodings;\n }\n\n if (!useSimulcast) {\n return [videoEncoding];\n }\n\n let presets: Array = [];\n if (isScreenShare) {\n presets =\n sortPresets(options?.screenShareSimulcastLayers) ??\n defaultSimulcastLayers(isScreenShare, original);\n } else {\n presets =\n sortPresets(options?.videoSimulcastLayers) ?? defaultSimulcastLayers(isScreenShare, original);\n }\n let midPreset: VideoPreset | undefined;\n if (presets.length > 0) {\n const lowPreset = presets[0];\n if (presets.length > 1) {\n [, midPreset] = presets;\n }\n\n // NOTE:\n // 1. Ordering of these encodings is important. Chrome seems\n // to use the index into encodings to decide which layer\n // to disable when CPU constrained.\n // So encodings should be ordered in increasing spatial\n // resolution order.\n // 2. livekit-server translates rids into layers. So, all encodings\n // should have the base layer `q` and then more added\n // based on other conditions.\n const size = Math.max(width, height);\n if (size >= 960 && midPreset) {\n return encodingsFromPresets(width, height, [lowPreset, midPreset, original], sourceFramerate);\n }\n if (size >= 480) {\n return encodingsFromPresets(width, height, [lowPreset, original], sourceFramerate);\n }\n }\n return encodingsFromPresets(width, height, [original]);\n}\n\nexport function computeTrackBackupEncodings(\n track: LocalVideoTrack,\n videoCodec: BackupVideoCodec,\n opts: TrackPublishOptions,\n) {\n // backupCodec should not be true anymore, default codec is set in LocalParticipant.publish\n if (\n !opts.backupCodec ||\n opts.backupCodec === true ||\n opts.backupCodec.codec === opts.videoCodec\n ) {\n // backup codec publishing is disabled\n return;\n }\n if (videoCodec !== opts.backupCodec.codec) {\n log.warn('requested a different codec than specified as backup', {\n serverRequested: videoCodec,\n backup: opts.backupCodec.codec,\n });\n }\n\n opts.videoCodec = videoCodec;\n // use backup encoding setting as videoEncoding for backup codec publishing\n opts.videoEncoding = opts.backupCodec.encoding;\n\n const settings = track.mediaStreamTrack.getSettings();\n const width = settings.width ?? track.dimensions?.width;\n const height = settings.height ?? track.dimensions?.height;\n\n const encodings = computeVideoEncodings(\n track.source === Track.Source.ScreenShare,\n width,\n height,\n opts,\n );\n return encodings;\n}\n\n/* @internal */\nexport function determineAppropriateEncoding(\n isScreenShare: boolean,\n width: number,\n height: number,\n codec?: VideoCodec,\n): VideoEncoding {\n const presets = presetsForResolution(isScreenShare, width, height);\n let { encoding } = presets[0];\n\n // handle portrait by swapping dimensions\n const size = Math.max(width, height);\n\n for (let i = 0; i < presets.length; i += 1) {\n const preset = presets[i];\n encoding = preset.encoding;\n if (preset.width >= size) {\n break;\n }\n }\n\n // presets are based on the assumption of vp8 as a codec\n // for other codecs we adjust the maxBitrate if no specific videoEncoding has been provided\n // users should override these with ones that are optimized for their use case\n // NOTE: SVC codec bitrates are inclusive of all scalability layers. while\n // bitrate for non-SVC codecs does not include other simulcast layers.\n if (codec) {\n switch (codec) {\n case 'av1':\n encoding = { ...encoding };\n encoding.maxBitrate = encoding.maxBitrate * 0.7;\n break;\n case 'vp9':\n encoding = { ...encoding };\n encoding.maxBitrate = encoding.maxBitrate * 0.85;\n break;\n default:\n break;\n }\n }\n\n return encoding;\n}\n\n/* @internal */\nexport function presetsForResolution(\n isScreenShare: boolean,\n width: number,\n height: number,\n): VideoPreset[] {\n if (isScreenShare) {\n return presetsScreenShare;\n }\n const aspect = width > height ? width / height : height / width;\n if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {\n return presets169;\n }\n return presets43;\n}\n\n/* @internal */\nexport function defaultSimulcastLayers(\n isScreenShare: boolean,\n original: VideoPreset,\n): VideoPreset[] {\n if (isScreenShare) {\n return computeDefaultScreenShareSimulcastPresets(original);\n }\n const { width, height } = original;\n const aspect = width > height ? width / height : height / width;\n if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {\n return defaultSimulcastPresets169;\n }\n return defaultSimulcastPresets43;\n}\n\n// presets should be ordered by low, medium, high\nfunction encodingsFromPresets(\n width: number,\n height: number,\n presets: VideoPreset[],\n sourceFramerate?: number | undefined,\n): RTCRtpEncodingParameters[] {\n const encodings: RTCRtpEncodingParameters[] = [];\n presets.forEach((preset, idx) => {\n if (idx >= videoRids.length) {\n return;\n }\n const size = Math.min(width, height);\n const rid = videoRids[idx];\n\n const encoding: RTCRtpEncodingParameters = {\n rid,\n scaleResolutionDownBy: Math.max(1, size / Math.min(preset.width, preset.height)),\n maxBitrate: preset.encoding.maxBitrate,\n };\n // ensure that the sourceFramerate is the highest framerate applied across all layers so that the\n // original encoding doesn't get bumped unintentionally by any of the other layers\n const maxFramerate =\n sourceFramerate && preset.encoding.maxFramerate\n ? Math.min(sourceFramerate, preset.encoding.maxFramerate)\n : preset.encoding.maxFramerate;\n if (maxFramerate) {\n encoding.maxFramerate = maxFramerate;\n }\n const canSetPriority = isFireFox() || idx === 0;\n if (preset.encoding.priority && canSetPriority) {\n encoding.priority = preset.encoding.priority;\n encoding.networkPriority = preset.encoding.priority;\n }\n encodings.push(encoding);\n });\n\n // RN ios simulcast requires all same framerates.\n if (isReactNative() && getReactNativeOs() === 'ios') {\n let topFramerate: number | undefined = undefined;\n encodings.forEach((encoding) => {\n if (!topFramerate) {\n topFramerate = encoding.maxFramerate;\n } else if (encoding.maxFramerate && encoding.maxFramerate > topFramerate) {\n topFramerate = encoding.maxFramerate;\n }\n });\n\n let notifyOnce = true;\n encodings.forEach((encoding) => {\n if (encoding.maxFramerate != topFramerate) {\n if (notifyOnce) {\n notifyOnce = false;\n log.info(\n `Simulcast on iOS React-Native requires all encodings to share the same framerate.`,\n );\n }\n log.info(`Setting framerate of encoding \\\"${encoding.rid ?? ''}\\\" to ${topFramerate}`);\n encoding.maxFramerate = topFramerate;\n }\n });\n }\n\n return encodings;\n}\n\n/** @internal */\nexport function sortPresets(presets: Array | undefined) {\n if (!presets) return;\n return presets.sort((a, b) => {\n const { encoding: aEnc } = a;\n const { encoding: bEnc } = b;\n\n if (aEnc.maxBitrate > bEnc.maxBitrate) {\n return 1;\n }\n if (aEnc.maxBitrate < bEnc.maxBitrate) return -1;\n if (aEnc.maxBitrate === bEnc.maxBitrate && aEnc.maxFramerate && bEnc.maxFramerate) {\n return aEnc.maxFramerate > bEnc.maxFramerate ? 1 : -1;\n }\n return 0;\n });\n}\n\n/** @internal */\nexport class ScalabilityMode {\n spatial: number;\n\n temporal: number;\n\n suffix: undefined | 'h' | '_KEY' | '_KEY_SHIFT';\n\n constructor(scalabilityMode: string) {\n const results = scalabilityMode.match(/^L(\\d)T(\\d)(h|_KEY|_KEY_SHIFT){0,1}$/);\n if (!results) {\n throw new Error('invalid scalability mode');\n }\n\n this.spatial = parseInt(results[1]);\n this.temporal = parseInt(results[2]);\n if (results.length > 3) {\n switch (results[3]) {\n case 'h':\n case '_KEY':\n case '_KEY_SHIFT':\n this.suffix = results[3];\n }\n }\n }\n\n toString(): string {\n return `L${this.spatial}T${this.temporal}${this.suffix ?? ''}`;\n }\n}\n\nexport function getDefaultDegradationPreference(track: LocalVideoTrack): RTCDegradationPreference {\n // a few of reasons we have different default paths:\n // 1. without this, Chrome seems to aggressively resize the SVC video stating `quality-limitation: bandwidth` even when BW isn't an issue\n // 2. since we are overriding contentHint to motion (to workaround L1T3 publishing), it overrides the default degradationPreference to `balanced`\n if (\n track.source === Track.Source.ScreenShare ||\n (track.constraints.height && unwrapConstraint(track.constraints.height) >= 1080)\n ) {\n return 'maintain-resolution';\n } else {\n return 'balanced';\n }\n}\n","import { Mutex } from '@livekit/mutex';\nimport {\n VideoQuality as ProtoVideoQuality,\n SubscribedCodec,\n SubscribedQuality,\n VideoLayer,\n} from '@livekit/protocol';\nimport type { SignalClient } from '../../api/SignalClient';\nimport type { StructuredLogger } from '../../logger';\nimport { ScalabilityMode } from '../participant/publishUtils';\nimport type { VideoSenderStats } from '../stats';\nimport { computeBitrate, monitorFrequency } from '../stats';\nimport type { LoggerOptions } from '../types';\nimport { isFireFox, isMobile, isWeb } from '../utils';\nimport LocalTrack from './LocalTrack';\nimport { Track, VideoQuality } from './Track';\nimport type { VideoCaptureOptions, VideoCodec } from './options';\nimport type { TrackProcessor } from './processor/types';\nimport { constraintsForOptions } from './utils';\n\nexport class SimulcastTrackInfo {\n codec: VideoCodec;\n\n mediaStreamTrack: MediaStreamTrack;\n\n sender?: RTCRtpSender;\n\n encodings?: RTCRtpEncodingParameters[];\n\n constructor(codec: VideoCodec, mediaStreamTrack: MediaStreamTrack) {\n this.codec = codec;\n this.mediaStreamTrack = mediaStreamTrack;\n }\n}\n\nconst refreshSubscribedCodecAfterNewCodec = 5000;\n\nexport default class LocalVideoTrack extends LocalTrack {\n /* @internal */\n signalClient?: SignalClient;\n\n private prevStats?: Map;\n\n private encodings?: RTCRtpEncodingParameters[];\n\n /* @internal */\n simulcastCodecs: Map = new Map();\n\n private subscribedCodecs?: SubscribedCodec[];\n\n // prevents concurrent manipulations to track sender\n // if multiple get/setParameter are called concurrently, certain timing of events\n // could lead to the browser throwing an exception in `setParameter`, due to\n // a missing `getParameter` call.\n private senderLock: Mutex;\n\n private degradationPreference: RTCDegradationPreference = 'balanced';\n\n get sender(): RTCRtpSender | undefined {\n return this._sender;\n }\n\n set sender(sender: RTCRtpSender | undefined) {\n this._sender = sender;\n if (this.degradationPreference) {\n this.setDegradationPreference(this.degradationPreference);\n }\n }\n\n /**\n *\n * @param mediaTrack\n * @param constraints MediaTrackConstraints that are being used when restarting or reacquiring tracks\n * @param userProvidedTrack Signals to the SDK whether or not the mediaTrack should be managed (i.e. released and reacquired) internally by the SDK\n */\n constructor(\n mediaTrack: MediaStreamTrack,\n constraints?: MediaTrackConstraints,\n userProvidedTrack = true,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, Track.Kind.Video, constraints, userProvidedTrack, loggerOptions);\n this.senderLock = new Mutex();\n }\n\n get isSimulcast(): boolean {\n if (this.sender && this.sender.getParameters().encodings.length > 1) {\n return true;\n }\n return false;\n }\n\n /* @internal */\n startMonitor(signalClient: SignalClient) {\n this.signalClient = signalClient;\n if (!isWeb()) {\n return;\n }\n // save original encodings\n // TODO : merge simulcast tracks stats\n const params = this.sender?.getParameters();\n if (params) {\n this.encodings = params.encodings;\n }\n\n if (this.monitorInterval) {\n return;\n }\n this.monitorInterval = setInterval(() => {\n this.monitorSender();\n }, monitorFrequency);\n }\n\n stop() {\n this._mediaStreamTrack.getConstraints();\n this.simulcastCodecs.forEach((trackInfo) => {\n trackInfo.mediaStreamTrack.stop();\n });\n super.stop();\n }\n\n async pauseUpstream() {\n await super.pauseUpstream();\n for await (const sc of this.simulcastCodecs.values()) {\n await sc.sender?.replaceTrack(null);\n }\n }\n\n async resumeUpstream() {\n await super.resumeUpstream();\n for await (const sc of this.simulcastCodecs.values()) {\n await sc.sender?.replaceTrack(sc.mediaStreamTrack);\n }\n }\n\n async mute(): Promise {\n const unlock = await this.muteLock.lock();\n try {\n if (this.isMuted) {\n this.log.debug('Track already muted', this.logContext);\n return this;\n }\n\n if (this.source === Track.Source.Camera && !this.isUserProvided) {\n this.log.debug('stopping camera track', this.logContext);\n // also stop the track, so that camera indicator is turned off\n this._mediaStreamTrack.stop();\n }\n await super.mute();\n return this;\n } finally {\n unlock();\n }\n }\n\n async unmute(): Promise {\n const unlock = await this.muteLock.lock();\n try {\n if (!this.isMuted) {\n this.log.debug('Track already unmuted', this.logContext);\n return this;\n }\n\n if (this.source === Track.Source.Camera && !this.isUserProvided) {\n this.log.debug('reacquiring camera track', this.logContext);\n await this.restartTrack();\n }\n await super.unmute();\n return this;\n } finally {\n unlock();\n }\n }\n\n protected setTrackMuted(muted: boolean) {\n super.setTrackMuted(muted);\n for (const sc of this.simulcastCodecs.values()) {\n sc.mediaStreamTrack.enabled = !muted;\n }\n }\n\n async getSenderStats(): Promise {\n if (!this.sender?.getStats) {\n return [];\n }\n\n const items: VideoSenderStats[] = [];\n\n const stats = await this.sender.getStats();\n stats.forEach((v) => {\n if (v.type === 'outbound-rtp') {\n const vs: VideoSenderStats = {\n type: 'video',\n streamId: v.id,\n frameHeight: v.frameHeight,\n frameWidth: v.frameWidth,\n framesPerSecond: v.framesPerSecond,\n framesSent: v.framesSent,\n firCount: v.firCount,\n pliCount: v.pliCount,\n nackCount: v.nackCount,\n packetsSent: v.packetsSent,\n bytesSent: v.bytesSent,\n qualityLimitationReason: v.qualityLimitationReason,\n qualityLimitationDurations: v.qualityLimitationDurations,\n qualityLimitationResolutionChanges: v.qualityLimitationResolutionChanges,\n rid: v.rid ?? v.id,\n retransmittedPacketsSent: v.retransmittedPacketsSent,\n targetBitrate: v.targetBitrate,\n timestamp: v.timestamp,\n };\n\n // locate the appropriate remote-inbound-rtp item\n const r = stats.get(v.remoteId);\n if (r) {\n vs.jitter = r.jitter;\n vs.packetsLost = r.packetsLost;\n vs.roundTripTime = r.roundTripTime;\n }\n\n items.push(vs);\n }\n });\n\n // make sure highest res layer is always first\n items.sort((a, b) => (b.frameWidth ?? 0) - (a.frameWidth ?? 0));\n return items;\n }\n\n setPublishingQuality(maxQuality: VideoQuality) {\n const qualities: SubscribedQuality[] = [];\n for (let q = VideoQuality.LOW; q <= VideoQuality.HIGH; q += 1) {\n qualities.push(\n new SubscribedQuality({\n quality: q,\n enabled: q <= maxQuality,\n }),\n );\n }\n this.log.debug(`setting publishing quality. max quality ${maxQuality}`, this.logContext);\n this.setPublishingLayers(qualities);\n }\n\n async restartTrack(options?: VideoCaptureOptions) {\n let constraints: MediaTrackConstraints | undefined;\n if (options) {\n const streamConstraints = constraintsForOptions({ video: options });\n if (typeof streamConstraints.video !== 'boolean') {\n constraints = streamConstraints.video;\n }\n }\n await this.restart(constraints);\n\n for await (const sc of this.simulcastCodecs.values()) {\n if (sc.sender) {\n sc.mediaStreamTrack = this.mediaStreamTrack.clone();\n await sc.sender.replaceTrack(sc.mediaStreamTrack);\n }\n }\n }\n\n async setProcessor(\n processor: TrackProcessor,\n showProcessedStreamLocally = true,\n ) {\n await super.setProcessor(processor, showProcessedStreamLocally);\n\n if (this.processor?.processedTrack) {\n for await (const sc of this.simulcastCodecs.values()) {\n await sc.sender?.replaceTrack(this.processor.processedTrack);\n }\n }\n }\n\n async setDegradationPreference(preference: RTCDegradationPreference) {\n this.degradationPreference = preference;\n if (this.sender) {\n try {\n this.log.debug(`setting degradationPreference to ${preference}`, this.logContext);\n const params = this.sender.getParameters();\n params.degradationPreference = preference;\n this.sender.setParameters(params);\n } catch (e: any) {\n this.log.warn(`failed to set degradationPreference`, { error: e, ...this.logContext });\n }\n }\n }\n\n addSimulcastTrack(\n codec: VideoCodec,\n encodings?: RTCRtpEncodingParameters[],\n ): SimulcastTrackInfo | undefined {\n if (this.simulcastCodecs.has(codec)) {\n this.log.error(`${codec} already added, skipping adding simulcast codec`, this.logContext);\n return;\n }\n const simulcastCodecInfo: SimulcastTrackInfo = {\n codec,\n mediaStreamTrack: this.mediaStreamTrack.clone(),\n sender: undefined,\n encodings,\n };\n this.simulcastCodecs.set(codec, simulcastCodecInfo);\n return simulcastCodecInfo;\n }\n\n setSimulcastTrackSender(codec: VideoCodec, sender: RTCRtpSender) {\n const simulcastCodecInfo = this.simulcastCodecs.get(codec);\n if (!simulcastCodecInfo) {\n return;\n }\n simulcastCodecInfo.sender = sender;\n\n // browser will reenable disabled codec/layers after new codec has been published,\n // so refresh subscribedCodecs after publish a new codec\n setTimeout(() => {\n if (this.subscribedCodecs) {\n this.setPublishingCodecs(this.subscribedCodecs);\n }\n }, refreshSubscribedCodecAfterNewCodec);\n }\n\n /**\n * @internal\n * Sets codecs that should be publishing, returns new codecs that have not yet\n * been published\n */\n async setPublishingCodecs(codecs: SubscribedCodec[]): Promise {\n this.log.debug('setting publishing codecs', {\n ...this.logContext,\n codecs,\n currentCodec: this.codec,\n });\n // only enable simulcast codec for preference codec setted\n if (!this.codec && codecs.length > 0) {\n await this.setPublishingLayers(codecs[0].qualities);\n return [];\n }\n\n this.subscribedCodecs = codecs;\n\n const newCodecs: VideoCodec[] = [];\n for await (const codec of codecs) {\n if (!this.codec || this.codec === codec.codec) {\n await this.setPublishingLayers(codec.qualities);\n } else {\n const simulcastCodecInfo = this.simulcastCodecs.get(codec.codec as VideoCodec);\n this.log.debug(`try setPublishingCodec for ${codec.codec}`, {\n ...this.logContext,\n simulcastCodecInfo,\n });\n if (!simulcastCodecInfo || !simulcastCodecInfo.sender) {\n for (const q of codec.qualities) {\n if (q.enabled) {\n newCodecs.push(codec.codec as VideoCodec);\n break;\n }\n }\n } else if (simulcastCodecInfo.encodings) {\n this.log.debug(`try setPublishingLayersForSender ${codec.codec}`, this.logContext);\n await setPublishingLayersForSender(\n simulcastCodecInfo.sender,\n simulcastCodecInfo.encodings!,\n codec.qualities,\n this.senderLock,\n this.log,\n this.logContext,\n );\n }\n }\n }\n return newCodecs;\n }\n\n /**\n * @internal\n * Sets layers that should be publishing\n */\n async setPublishingLayers(qualities: SubscribedQuality[]) {\n this.log.debug('setting publishing layers', { ...this.logContext, qualities });\n if (!this.sender || !this.encodings) {\n return;\n }\n\n await setPublishingLayersForSender(\n this.sender,\n this.encodings,\n qualities,\n this.senderLock,\n this.log,\n this.logContext,\n );\n }\n\n protected monitorSender = async () => {\n if (!this.sender) {\n this._currentBitrate = 0;\n return;\n }\n\n let stats: VideoSenderStats[] | undefined;\n try {\n stats = await this.getSenderStats();\n } catch (e) {\n this.log.error('could not get audio sender stats', { ...this.logContext, error: e });\n return;\n }\n const statsMap = new Map(stats.map((s) => [s.rid, s]));\n\n if (this.prevStats) {\n let totalBitrate = 0;\n statsMap.forEach((s, key) => {\n const prev = this.prevStats?.get(key);\n totalBitrate += computeBitrate(s, prev);\n });\n this._currentBitrate = totalBitrate;\n }\n\n this.prevStats = statsMap;\n };\n\n protected async handleAppVisibilityChanged() {\n await super.handleAppVisibilityChanged();\n if (!isMobile()) return;\n if (this.isInBackground && this.source === Track.Source.Camera) {\n this._mediaStreamTrack.enabled = false;\n }\n }\n}\n\nasync function setPublishingLayersForSender(\n sender: RTCRtpSender,\n senderEncodings: RTCRtpEncodingParameters[],\n qualities: SubscribedQuality[],\n senderLock: Mutex,\n log: StructuredLogger,\n logContext: Record,\n) {\n const unlock = await senderLock.lock();\n log.debug('setPublishingLayersForSender', { ...logContext, sender, qualities, senderEncodings });\n try {\n const params = sender.getParameters();\n const { encodings } = params;\n if (!encodings) {\n return;\n }\n\n if (encodings.length !== senderEncodings.length) {\n log.warn('cannot set publishing layers, encodings mismatch', {\n ...logContext,\n encodings,\n senderEncodings,\n });\n return;\n }\n\n let hasChanged = false;\n\n /* disable closable spatial layer as it has video blur / frozen issue with current server / client\n 1. chrome 113: when switching to up layer with scalability Mode change, it will generate a\n low resolution frame and recover very quickly, but noticable\n 2. livekit sfu: additional pli request cause video frozen for a few frames, also noticable */\n const closableSpatial = false;\n /* @ts-ignore */\n if (closableSpatial && encodings[0].scalabilityMode) {\n // svc dynacast encodings\n const encoding = encodings[0];\n /* @ts-ignore */\n // const mode = new ScalabilityMode(encoding.scalabilityMode);\n let maxQuality = ProtoVideoQuality.OFF;\n qualities.forEach((q) => {\n if (q.enabled && (maxQuality === ProtoVideoQuality.OFF || q.quality > maxQuality)) {\n maxQuality = q.quality;\n }\n });\n\n if (maxQuality === ProtoVideoQuality.OFF) {\n if (encoding.active) {\n encoding.active = false;\n hasChanged = true;\n }\n } else if (!encoding.active /* || mode.spatial !== maxQuality + 1*/) {\n hasChanged = true;\n encoding.active = true;\n /*\n @ts-ignore\n const originalMode = new ScalabilityMode(senderEncodings[0].scalabilityMode)\n mode.spatial = maxQuality + 1;\n mode.suffix = originalMode.suffix;\n if (mode.spatial === 1) {\n // no suffix for L1Tx\n mode.suffix = undefined;\n }\n @ts-ignore\n encoding.scalabilityMode = mode.toString();\n encoding.scaleResolutionDownBy = 2 ** (2 - maxQuality);\n */\n }\n } else {\n // simulcast dynacast encodings\n encodings.forEach((encoding, idx) => {\n let rid = encoding.rid ?? '';\n if (rid === '') {\n rid = 'q';\n }\n const quality = videoQualityForRid(rid);\n const subscribedQuality = qualities.find((q) => q.quality === quality);\n if (!subscribedQuality) {\n return;\n }\n if (encoding.active !== subscribedQuality.enabled) {\n hasChanged = true;\n encoding.active = subscribedQuality.enabled;\n log.debug(\n `setting layer ${subscribedQuality.quality} to ${\n encoding.active ? 'enabled' : 'disabled'\n }`,\n logContext,\n );\n\n // FireFox does not support setting encoding.active to false, so we\n // have a workaround of lowering its bitrate and resolution to the min.\n if (isFireFox()) {\n if (subscribedQuality.enabled) {\n encoding.scaleResolutionDownBy = senderEncodings[idx].scaleResolutionDownBy;\n encoding.maxBitrate = senderEncodings[idx].maxBitrate;\n /* @ts-ignore */\n encoding.maxFrameRate = senderEncodings[idx].maxFrameRate;\n } else {\n encoding.scaleResolutionDownBy = 4;\n encoding.maxBitrate = 10;\n /* @ts-ignore */\n encoding.maxFrameRate = 2;\n }\n }\n }\n });\n }\n\n if (hasChanged) {\n params.encodings = encodings;\n log.debug(`setting encodings`, { ...logContext, encodings: params.encodings });\n await sender.setParameters(params);\n }\n } finally {\n unlock();\n }\n}\n\nexport function videoQualityForRid(rid: string): VideoQuality {\n switch (rid) {\n case 'f':\n return VideoQuality.HIGH;\n case 'h':\n return VideoQuality.MEDIUM;\n case 'q':\n return VideoQuality.LOW;\n default:\n return VideoQuality.HIGH;\n }\n}\n\nexport function videoLayersFromEncodings(\n width: number,\n height: number,\n encodings?: RTCRtpEncodingParameters[],\n svc?: boolean,\n): VideoLayer[] {\n // default to a single layer, HQ\n if (!encodings) {\n return [\n new VideoLayer({\n quality: VideoQuality.HIGH,\n width,\n height,\n bitrate: 0,\n ssrc: 0,\n }),\n ];\n }\n\n if (svc) {\n // svc layers\n /* @ts-ignore */\n const encodingSM = encodings[0].scalabilityMode as string;\n const sm = new ScalabilityMode(encodingSM);\n const layers = [];\n const resRatio = sm.suffix == 'h' ? 1.5 : 2;\n const bitratesRatio = sm.suffix == 'h' ? 2 : 3;\n for (let i = 0; i < sm.spatial; i += 1) {\n layers.push(\n new VideoLayer({\n quality: Math.min(VideoQuality.HIGH, sm.spatial - 1) - i,\n width: Math.ceil(width / resRatio ** i),\n height: Math.ceil(height / resRatio ** i),\n bitrate: encodings[0].maxBitrate\n ? Math.ceil(encodings[0].maxBitrate / bitratesRatio ** i)\n : 0,\n ssrc: 0,\n }),\n );\n }\n return layers;\n }\n\n return encodings.map((encoding) => {\n const scale = encoding.scaleResolutionDownBy ?? 1;\n let quality = videoQualityForRid(encoding.rid ?? '');\n return new VideoLayer({\n quality,\n width: Math.ceil(width / scale),\n height: Math.ceil(height / scale),\n bitrate: encoding.maxBitrate ?? 0,\n ssrc: 0,\n });\n });\n}\n","import { Mutex } from '@livekit/mutex';\nimport {\n type AddTrackRequest,\n ClientConfigSetting,\n ClientConfiguration,\n type ConnectionQualityUpdate,\n DataChannelInfo,\n DataPacket,\n DataPacket_Kind,\n DisconnectReason,\n type JoinResponse,\n type LeaveRequest,\n LeaveRequest_Action,\n ParticipantInfo,\n ReconnectReason,\n type ReconnectResponse,\n RequestResponse,\n Room as RoomModel,\n SignalTarget,\n SpeakerInfo,\n type StreamStateUpdate,\n SubscribedQualityUpdate,\n type SubscriptionPermissionUpdate,\n type SubscriptionResponse,\n SyncState,\n TrackInfo,\n type TrackPublishedResponse,\n TrackUnpublishedResponse,\n Transcription,\n UpdateSubscription,\n type UserPacket,\n} from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type { MediaAttributes } from 'sdp-transform';\nimport type TypedEventEmitter from 'typed-emitter';\nimport type { SignalOptions } from '../api/SignalClient';\nimport {\n SignalClient,\n SignalConnectionState,\n toProtoSessionDescription,\n} from '../api/SignalClient';\nimport log, { LoggerNames, getLogger } from '../logger';\nimport type { InternalRoomOptions } from '../options';\nimport PCTransport, { PCEvents } from './PCTransport';\nimport { PCTransportManager, PCTransportState } from './PCTransportManager';\nimport type { ReconnectContext, ReconnectPolicy } from './ReconnectPolicy';\nimport type { RegionUrlProvider } from './RegionUrlProvider';\nimport { roomConnectOptionDefaults } from './defaults';\nimport {\n ConnectionError,\n ConnectionErrorReason,\n NegotiationError,\n TrackInvalidError,\n UnexpectedConnectionState,\n} from './errors';\nimport { EngineEvent } from './events';\nimport CriticalTimers from './timers';\nimport type LocalTrack from './track/LocalTrack';\nimport type LocalTrackPublication from './track/LocalTrackPublication';\nimport LocalVideoTrack from './track/LocalVideoTrack';\nimport type { SimulcastTrackInfo } from './track/LocalVideoTrack';\nimport type RemoteTrackPublication from './track/RemoteTrackPublication';\nimport type { Track } from './track/Track';\nimport type { TrackPublishOptions, VideoCodec } from './track/options';\nimport { getTrackPublicationInfo } from './track/utils';\nimport type { LoggerOptions } from './types';\nimport { isVideoCodec, isWeb, sleep, supportsAddTrack, supportsTransceiver } from './utils';\n\nconst lossyDataChannel = '_lossy';\nconst reliableDataChannel = '_reliable';\nconst minReconnectWait = 2 * 1000;\nconst leaveReconnect = 'leave-reconnect';\n\nenum PCState {\n New,\n Connected,\n Disconnected,\n Reconnecting,\n Closed,\n}\n\n/** @internal */\nexport default class RTCEngine extends (EventEmitter as new () => TypedEventEmitter) {\n client: SignalClient;\n\n rtcConfig: RTCConfiguration = {};\n\n peerConnectionTimeout: number = roomConnectOptionDefaults.peerConnectionTimeout;\n\n fullReconnectOnNext: boolean = false;\n\n pcManager?: PCTransportManager;\n\n /**\n * @internal\n */\n latestJoinResponse?: JoinResponse;\n\n get isClosed() {\n return this._isClosed;\n }\n\n get pendingReconnect() {\n return !!this.reconnectTimeout;\n }\n\n private lossyDC?: RTCDataChannel;\n\n // @ts-ignore noUnusedLocals\n private lossyDCSub?: RTCDataChannel;\n\n private reliableDC?: RTCDataChannel;\n\n private dcBufferStatus: Map;\n\n // @ts-ignore noUnusedLocals\n private reliableDCSub?: RTCDataChannel;\n\n private subscriberPrimary: boolean = false;\n\n private pcState: PCState = PCState.New;\n\n private _isClosed: boolean = true;\n\n private pendingTrackResolvers: {\n [key: string]: { resolve: (info: TrackInfo) => void; reject: () => void };\n } = {};\n\n // keep join info around for reconnect, this could be a region url\n private url?: string;\n\n private token?: string;\n\n private signalOpts?: SignalOptions;\n\n private reconnectAttempts: number = 0;\n\n private reconnectStart: number = 0;\n\n private clientConfiguration?: ClientConfiguration;\n\n private attemptingReconnect: boolean = false;\n\n private reconnectPolicy: ReconnectPolicy;\n\n private reconnectTimeout?: ReturnType;\n\n private participantSid?: string;\n\n /** keeps track of how often an initial join connection has been tried */\n private joinAttempts: number = 0;\n\n /** specifies how often an initial join connection is allowed to retry */\n private maxJoinAttempts: number = 1;\n\n private closingLock: Mutex;\n\n private dataProcessLock: Mutex;\n\n private shouldFailNext: boolean = false;\n\n private regionUrlProvider?: RegionUrlProvider;\n\n private log = log;\n\n private loggerOptions: LoggerOptions;\n\n private publisherConnectionPromise: Promise | undefined;\n\n constructor(private options: InternalRoomOptions) {\n super();\n this.log = getLogger(options.loggerName ?? LoggerNames.Engine);\n this.loggerOptions = {\n loggerName: options.loggerName,\n loggerContextCb: () => this.logContext,\n };\n this.client = new SignalClient(undefined, this.loggerOptions);\n this.client.signalLatency = this.options.expSignalLatency;\n this.reconnectPolicy = this.options.reconnectPolicy;\n this.registerOnLineListener();\n this.closingLock = new Mutex();\n this.dataProcessLock = new Mutex();\n this.dcBufferStatus = new Map([\n [DataPacket_Kind.LOSSY, true],\n [DataPacket_Kind.RELIABLE, true],\n ]);\n\n this.client.onParticipantUpdate = (updates) =>\n this.emit(EngineEvent.ParticipantUpdate, updates);\n this.client.onConnectionQuality = (update) =>\n this.emit(EngineEvent.ConnectionQualityUpdate, update);\n this.client.onRoomUpdate = (update) => this.emit(EngineEvent.RoomUpdate, update);\n this.client.onSubscriptionError = (resp) => this.emit(EngineEvent.SubscriptionError, resp);\n this.client.onSubscriptionPermissionUpdate = (update) =>\n this.emit(EngineEvent.SubscriptionPermissionUpdate, update);\n this.client.onSpeakersChanged = (update) => this.emit(EngineEvent.SpeakersChanged, update);\n this.client.onStreamStateUpdate = (update) => this.emit(EngineEvent.StreamStateChanged, update);\n this.client.onRequestResponse = (response) =>\n this.emit(EngineEvent.SignalRequestResponse, response);\n }\n\n /** @internal */\n get logContext() {\n return {\n room: this.latestJoinResponse?.room?.name,\n roomID: this.latestJoinResponse?.room?.sid,\n participant: this.latestJoinResponse?.participant?.identity,\n pID: this.latestJoinResponse?.participant?.sid,\n };\n }\n\n async join(\n url: string,\n token: string,\n opts: SignalOptions,\n abortSignal?: AbortSignal,\n ): Promise {\n this.url = url;\n this.token = token;\n this.signalOpts = opts;\n this.maxJoinAttempts = opts.maxRetries;\n try {\n this.joinAttempts += 1;\n\n this.setupSignalClientCallbacks();\n const joinResponse = await this.client.join(url, token, opts, abortSignal);\n this._isClosed = false;\n this.latestJoinResponse = joinResponse;\n\n this.subscriberPrimary = joinResponse.subscriberPrimary;\n if (!this.pcManager) {\n await this.configure(joinResponse);\n }\n\n // create offer\n if (!this.subscriberPrimary || joinResponse.fastPublish) {\n this.negotiate();\n }\n\n this.clientConfiguration = joinResponse.clientConfiguration;\n return joinResponse;\n } catch (e) {\n if (e instanceof ConnectionError) {\n if (e.reason === ConnectionErrorReason.ServerUnreachable) {\n this.log.warn(\n `Couldn't connect to server, attempt ${this.joinAttempts} of ${this.maxJoinAttempts}`,\n this.logContext,\n );\n if (this.joinAttempts < this.maxJoinAttempts) {\n return this.join(url, token, opts, abortSignal);\n }\n }\n }\n throw e;\n }\n }\n\n async close() {\n const unlock = await this.closingLock.lock();\n if (this.isClosed) {\n unlock();\n return;\n }\n try {\n this._isClosed = true;\n this.joinAttempts = 0;\n this.emit(EngineEvent.Closing);\n this.removeAllListeners();\n this.deregisterOnLineListener();\n this.clearPendingReconnect();\n await this.cleanupPeerConnections();\n await this.cleanupClient();\n } finally {\n unlock();\n }\n }\n\n async cleanupPeerConnections() {\n await this.pcManager?.close();\n this.pcManager = undefined;\n\n const dcCleanup = (dc: RTCDataChannel | undefined) => {\n if (!dc) return;\n dc.close();\n dc.onbufferedamountlow = null;\n dc.onclose = null;\n dc.onclosing = null;\n dc.onerror = null;\n dc.onmessage = null;\n dc.onopen = null;\n };\n dcCleanup(this.lossyDC);\n dcCleanup(this.lossyDCSub);\n dcCleanup(this.reliableDC);\n dcCleanup(this.reliableDCSub);\n\n this.lossyDC = undefined;\n this.lossyDCSub = undefined;\n this.reliableDC = undefined;\n this.reliableDCSub = undefined;\n }\n\n async cleanupClient() {\n await this.client.close();\n this.client.resetCallbacks();\n }\n\n addTrack(req: AddTrackRequest): Promise {\n if (this.pendingTrackResolvers[req.cid]) {\n throw new TrackInvalidError('a track with the same ID has already been published');\n }\n return new Promise((resolve, reject) => {\n const publicationTimeout = setTimeout(() => {\n delete this.pendingTrackResolvers[req.cid];\n reject(\n new ConnectionError(\n 'publication of local track timed out, no response from server',\n ConnectionErrorReason.InternalError,\n ),\n );\n }, 10_000);\n this.pendingTrackResolvers[req.cid] = {\n resolve: (info: TrackInfo) => {\n clearTimeout(publicationTimeout);\n resolve(info);\n },\n reject: () => {\n clearTimeout(publicationTimeout);\n reject(new Error('Cancelled publication by calling unpublish'));\n },\n };\n this.client.sendAddTrack(req);\n });\n }\n\n /**\n * Removes sender from PeerConnection, returning true if it was removed successfully\n * and a negotiation is necessary\n * @param sender\n * @returns\n */\n removeTrack(sender: RTCRtpSender): boolean {\n if (sender.track && this.pendingTrackResolvers[sender.track.id]) {\n const { reject } = this.pendingTrackResolvers[sender.track.id];\n if (reject) {\n reject();\n }\n delete this.pendingTrackResolvers[sender.track.id];\n }\n try {\n this.pcManager!.removeTrack(sender);\n return true;\n } catch (e: unknown) {\n this.log.warn('failed to remove track', { ...this.logContext, error: e });\n }\n return false;\n }\n\n updateMuteStatus(trackSid: string, muted: boolean) {\n this.client.sendMuteTrack(trackSid, muted);\n }\n\n get dataSubscriberReadyState(): string | undefined {\n return this.reliableDCSub?.readyState;\n }\n\n async getConnectedServerAddress(): Promise {\n return this.pcManager?.getConnectedAddress();\n }\n\n /* @internal */\n setRegionUrlProvider(provider: RegionUrlProvider) {\n this.regionUrlProvider = provider;\n }\n\n private async configure(joinResponse: JoinResponse) {\n // already configured\n if (this.pcManager && this.pcManager.currentState !== PCTransportState.NEW) {\n return;\n }\n\n this.participantSid = joinResponse.participant?.sid;\n\n const rtcConfig = this.makeRTCConfiguration(joinResponse);\n\n this.pcManager = new PCTransportManager(\n rtcConfig,\n joinResponse.subscriberPrimary,\n this.loggerOptions,\n );\n\n this.emit(EngineEvent.TransportsCreated, this.pcManager.publisher, this.pcManager.subscriber);\n\n this.pcManager.onIceCandidate = (candidate, target) => {\n this.client.sendIceCandidate(candidate, target);\n };\n\n this.pcManager.onPublisherOffer = (offer) => {\n this.client.sendOffer(offer);\n };\n\n this.pcManager.onDataChannel = this.handleDataChannel;\n this.pcManager.onStateChange = async (connectionState, publisherState, subscriberState) => {\n this.log.debug(`primary PC state changed ${connectionState}`, this.logContext);\n\n if (['closed', 'disconnected', 'failed'].includes(publisherState)) {\n // reset publisher connection promise\n this.publisherConnectionPromise = undefined;\n }\n if (connectionState === PCTransportState.CONNECTED) {\n const shouldEmit = this.pcState === PCState.New;\n this.pcState = PCState.Connected;\n if (shouldEmit) {\n this.emit(EngineEvent.Connected, joinResponse);\n }\n } else if (connectionState === PCTransportState.FAILED) {\n // on Safari, PeerConnection will switch to 'disconnected' during renegotiation\n if (this.pcState === PCState.Connected) {\n this.pcState = PCState.Disconnected;\n\n this.handleDisconnect(\n 'peerconnection failed',\n subscriberState === 'failed'\n ? ReconnectReason.RR_SUBSCRIBER_FAILED\n : ReconnectReason.RR_PUBLISHER_FAILED,\n );\n }\n }\n\n // detect cases where both signal client and peer connection are severed and assume that user has lost network connection\n const isSignalSevered =\n this.client.isDisconnected ||\n this.client.currentState === SignalConnectionState.RECONNECTING;\n const isPCSevered = [\n PCTransportState.FAILED,\n PCTransportState.CLOSING,\n PCTransportState.CLOSED,\n ].includes(connectionState);\n if (isSignalSevered && isPCSevered && !this._isClosed) {\n this.emit(EngineEvent.Offline);\n }\n };\n this.pcManager.onTrack = (ev: RTCTrackEvent) => {\n this.emit(EngineEvent.MediaTrackAdded, ev.track, ev.streams[0], ev.receiver);\n };\n\n if (!supportOptionalDatachannel(joinResponse.serverInfo?.protocol)) {\n this.createDataChannels();\n }\n }\n\n private setupSignalClientCallbacks() {\n // configure signaling client\n this.client.onAnswer = async (sd) => {\n if (!this.pcManager) {\n return;\n }\n this.log.debug('received server answer', { ...this.logContext, RTCSdpType: sd.type });\n await this.pcManager.setPublisherAnswer(sd);\n };\n\n // add candidate on trickle\n this.client.onTrickle = (candidate, target) => {\n if (!this.pcManager) {\n return;\n }\n this.log.trace('got ICE candidate from peer', { ...this.logContext, candidate, target });\n this.pcManager.addIceCandidate(candidate, target);\n };\n\n // when server creates an offer for the client\n this.client.onOffer = async (sd) => {\n if (!this.pcManager) {\n return;\n }\n const answer = await this.pcManager.createSubscriberAnswerFromOffer(sd);\n this.client.sendAnswer(answer);\n };\n\n this.client.onLocalTrackPublished = (res: TrackPublishedResponse) => {\n this.log.debug('received trackPublishedResponse', {\n ...this.logContext,\n cid: res.cid,\n track: res.track?.sid,\n });\n if (!this.pendingTrackResolvers[res.cid]) {\n this.log.error(`missing track resolver for ${res.cid}`, {\n ...this.logContext,\n cid: res.cid,\n });\n return;\n }\n const { resolve } = this.pendingTrackResolvers[res.cid];\n delete this.pendingTrackResolvers[res.cid];\n resolve(res.track!);\n };\n\n this.client.onLocalTrackUnpublished = (response: TrackUnpublishedResponse) => {\n this.emit(EngineEvent.LocalTrackUnpublished, response);\n };\n\n this.client.onLocalTrackSubscribed = (trackSid: string) => {\n this.emit(EngineEvent.LocalTrackSubscribed, trackSid);\n };\n\n this.client.onTokenRefresh = (token: string) => {\n this.token = token;\n };\n\n this.client.onRemoteMuteChanged = (trackSid: string, muted: boolean) => {\n this.emit(EngineEvent.RemoteMute, trackSid, muted);\n };\n\n this.client.onSubscribedQualityUpdate = (update: SubscribedQualityUpdate) => {\n this.emit(EngineEvent.SubscribedQualityUpdate, update);\n };\n\n this.client.onClose = () => {\n this.handleDisconnect('signal', ReconnectReason.RR_SIGNAL_DISCONNECTED);\n };\n\n this.client.onLeave = (leave: LeaveRequest) => {\n this.log.debug('client leave request', { ...this.logContext, reason: leave?.reason });\n if (leave.regions && this.regionUrlProvider) {\n this.log.debug('updating regions', this.logContext);\n this.regionUrlProvider.setServerReportedRegions(leave.regions);\n }\n switch (leave.action) {\n case LeaveRequest_Action.DISCONNECT:\n this.emit(EngineEvent.Disconnected, leave?.reason);\n this.close();\n break;\n case LeaveRequest_Action.RECONNECT:\n this.fullReconnectOnNext = true;\n // reconnect immediately instead of waiting for next attempt\n this.handleDisconnect(leaveReconnect);\n break;\n case LeaveRequest_Action.RESUME:\n // reconnect immediately instead of waiting for next attempt\n this.handleDisconnect(leaveReconnect);\n default:\n break;\n }\n };\n }\n\n private makeRTCConfiguration(serverResponse: JoinResponse | ReconnectResponse): RTCConfiguration {\n const rtcConfig = { ...this.rtcConfig };\n\n if (this.signalOpts?.e2eeEnabled) {\n this.log.debug('E2EE - setting up transports with insertable streams', this.logContext);\n // this makes sure that no data is sent before the transforms are ready\n // @ts-ignore\n rtcConfig.encodedInsertableStreams = true;\n }\n\n // update ICE servers before creating PeerConnection\n if (serverResponse.iceServers && !rtcConfig.iceServers) {\n const rtcIceServers: RTCIceServer[] = [];\n serverResponse.iceServers.forEach((iceServer) => {\n const rtcIceServer: RTCIceServer = {\n urls: iceServer.urls,\n };\n if (iceServer.username) rtcIceServer.username = iceServer.username;\n if (iceServer.credential) {\n rtcIceServer.credential = iceServer.credential;\n }\n rtcIceServers.push(rtcIceServer);\n });\n rtcConfig.iceServers = rtcIceServers;\n }\n\n if (\n serverResponse.clientConfiguration &&\n serverResponse.clientConfiguration.forceRelay === ClientConfigSetting.ENABLED\n ) {\n rtcConfig.iceTransportPolicy = 'relay';\n }\n\n // @ts-ignore\n rtcConfig.sdpSemantics = 'unified-plan';\n // @ts-ignore\n rtcConfig.continualGatheringPolicy = 'gather_continually';\n\n return rtcConfig;\n }\n\n private createDataChannels() {\n if (!this.pcManager) {\n return;\n }\n\n // clear old data channel callbacks if recreate\n if (this.lossyDC) {\n this.lossyDC.onmessage = null;\n this.lossyDC.onerror = null;\n }\n if (this.reliableDC) {\n this.reliableDC.onmessage = null;\n this.reliableDC.onerror = null;\n }\n\n // create data channels\n this.lossyDC = this.pcManager.createPublisherDataChannel(lossyDataChannel, {\n // will drop older packets that arrive\n ordered: true,\n maxRetransmits: 0,\n });\n this.reliableDC = this.pcManager.createPublisherDataChannel(reliableDataChannel, {\n ordered: true,\n });\n\n // also handle messages over the pub channel, for backwards compatibility\n this.lossyDC.onmessage = this.handleDataMessage;\n this.reliableDC.onmessage = this.handleDataMessage;\n\n // handle datachannel errors\n this.lossyDC.onerror = this.handleDataError;\n this.reliableDC.onerror = this.handleDataError;\n\n // set up dc buffer threshold, set to 64kB (otherwise 0 by default)\n this.lossyDC.bufferedAmountLowThreshold = 65535;\n this.reliableDC.bufferedAmountLowThreshold = 65535;\n\n // handle buffer amount low events\n this.lossyDC.onbufferedamountlow = this.handleBufferedAmountLow;\n this.reliableDC.onbufferedamountlow = this.handleBufferedAmountLow;\n }\n\n private handleDataChannel = async ({ channel }: RTCDataChannelEvent) => {\n if (!channel) {\n return;\n }\n if (channel.label === reliableDataChannel) {\n this.reliableDCSub = channel;\n } else if (channel.label === lossyDataChannel) {\n this.lossyDCSub = channel;\n } else {\n return;\n }\n this.log.debug(`on data channel ${channel.id}, ${channel.label}`, this.logContext);\n channel.onmessage = this.handleDataMessage;\n };\n\n private handleDataMessage = async (message: MessageEvent) => {\n // make sure to respect incoming data message order by processing message events one after the other\n const unlock = await this.dataProcessLock.lock();\n try {\n // decode\n let buffer: ArrayBuffer | undefined;\n if (message.data instanceof ArrayBuffer) {\n buffer = message.data;\n } else if (message.data instanceof Blob) {\n buffer = await message.data.arrayBuffer();\n } else {\n this.log.error('unsupported data type', { ...this.logContext, data: message.data });\n return;\n }\n const dp = DataPacket.fromBinary(new Uint8Array(buffer));\n if (dp.value?.case === 'speaker') {\n // dispatch speaker updates\n this.emit(EngineEvent.ActiveSpeakersUpdate, dp.value.value.speakers);\n } else {\n if (dp.value?.case === 'user') {\n // compatibility\n applyUserDataCompat(dp, dp.value.value);\n }\n this.emit(EngineEvent.DataPacketReceived, dp);\n }\n } finally {\n unlock();\n }\n };\n\n private handleDataError = (event: Event) => {\n const channel = event.currentTarget as RTCDataChannel;\n const channelKind = channel.maxRetransmits === 0 ? 'lossy' : 'reliable';\n\n if (event instanceof ErrorEvent && event.error) {\n const { error } = event.error;\n this.log.error(`DataChannel error on ${channelKind}: ${event.message}`, {\n ...this.logContext,\n error,\n });\n } else {\n this.log.error(`Unknown DataChannel error on ${channelKind}`, { ...this.logContext, event });\n }\n };\n\n private handleBufferedAmountLow = (event: Event) => {\n const channel = event.currentTarget as RTCDataChannel;\n const channelKind =\n channel.maxRetransmits === 0 ? DataPacket_Kind.LOSSY : DataPacket_Kind.RELIABLE;\n\n this.updateAndEmitDCBufferStatus(channelKind);\n };\n\n async createSender(\n track: LocalTrack,\n opts: TrackPublishOptions,\n encodings?: RTCRtpEncodingParameters[],\n ) {\n if (supportsTransceiver()) {\n const sender = await this.createTransceiverRTCRtpSender(track, opts, encodings);\n return sender;\n }\n if (supportsAddTrack()) {\n this.log.warn('using add-track fallback', this.logContext);\n const sender = await this.createRTCRtpSender(track.mediaStreamTrack);\n return sender;\n }\n throw new UnexpectedConnectionState('Required webRTC APIs not supported on this device');\n }\n\n async createSimulcastSender(\n track: LocalVideoTrack,\n simulcastTrack: SimulcastTrackInfo,\n opts: TrackPublishOptions,\n encodings?: RTCRtpEncodingParameters[],\n ) {\n // store RTCRtpSender\n if (supportsTransceiver()) {\n return this.createSimulcastTransceiverSender(track, simulcastTrack, opts, encodings);\n }\n if (supportsAddTrack()) {\n this.log.debug('using add-track fallback', this.logContext);\n return this.createRTCRtpSender(track.mediaStreamTrack);\n }\n\n throw new UnexpectedConnectionState('Cannot stream on this device');\n }\n\n private async createTransceiverRTCRtpSender(\n track: LocalTrack,\n opts: TrackPublishOptions,\n encodings?: RTCRtpEncodingParameters[],\n ) {\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('publisher is closed');\n }\n\n const streams: MediaStream[] = [];\n\n if (track.mediaStream) {\n streams.push(track.mediaStream);\n }\n\n if (track instanceof LocalVideoTrack) {\n track.codec = opts.videoCodec;\n }\n\n const transceiverInit: RTCRtpTransceiverInit = { direction: 'sendonly', streams };\n if (encodings) {\n transceiverInit.sendEncodings = encodings;\n }\n // addTransceiver for react-native is async. web is synchronous, but await won't effect it.\n const transceiver = await this.pcManager.addPublisherTransceiver(\n track.mediaStreamTrack,\n transceiverInit,\n );\n\n return transceiver.sender;\n }\n\n private async createSimulcastTransceiverSender(\n track: LocalVideoTrack,\n simulcastTrack: SimulcastTrackInfo,\n opts: TrackPublishOptions,\n encodings?: RTCRtpEncodingParameters[],\n ) {\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('publisher is closed');\n }\n const transceiverInit: RTCRtpTransceiverInit = { direction: 'sendonly' };\n if (encodings) {\n transceiverInit.sendEncodings = encodings;\n }\n // addTransceiver for react-native is async. web is synchronous, but await won't effect it.\n const transceiver = await this.pcManager.addPublisherTransceiver(\n simulcastTrack.mediaStreamTrack,\n transceiverInit,\n );\n if (!opts.videoCodec) {\n return;\n }\n track.setSimulcastTrackSender(opts.videoCodec, transceiver.sender);\n return transceiver.sender;\n }\n\n private async createRTCRtpSender(track: MediaStreamTrack) {\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('publisher is closed');\n }\n return this.pcManager.addPublisherTrack(track);\n }\n\n // websocket reconnect behavior. if websocket is interrupted, and the PeerConnection\n // continues to work, we can reconnect to websocket to continue the session\n // after a number of retries, we'll close and give up permanently\n private handleDisconnect = (connection: string, disconnectReason?: ReconnectReason) => {\n if (this._isClosed) {\n return;\n }\n\n this.log.warn(`${connection} disconnected`, this.logContext);\n if (this.reconnectAttempts === 0) {\n // only reset start time on the first try\n this.reconnectStart = Date.now();\n }\n\n const disconnect = (duration: number) => {\n this.log.warn(\n `could not recover connection after ${this.reconnectAttempts} attempts, ${duration}ms. giving up`,\n this.logContext,\n );\n this.emit(EngineEvent.Disconnected);\n this.close();\n };\n\n const duration = Date.now() - this.reconnectStart;\n let delay = this.getNextRetryDelay({\n elapsedMs: duration,\n retryCount: this.reconnectAttempts,\n });\n\n if (delay === null) {\n disconnect(duration);\n return;\n }\n if (connection === leaveReconnect) {\n delay = 0;\n }\n\n this.log.debug(`reconnecting in ${delay}ms`, this.logContext);\n\n this.clearReconnectTimeout();\n if (this.token && this.regionUrlProvider) {\n // token may have been refreshed, we do not want to recreate the regionUrlProvider\n // since the current engine may have inherited a regional url\n this.regionUrlProvider.updateToken(this.token);\n }\n this.reconnectTimeout = CriticalTimers.setTimeout(\n () =>\n this.attemptReconnect(disconnectReason).finally(() => (this.reconnectTimeout = undefined)),\n delay,\n );\n };\n\n private async attemptReconnect(reason?: ReconnectReason) {\n if (this._isClosed) {\n return;\n }\n // guard for attempting reconnection multiple times while one attempt is still not finished\n if (this.attemptingReconnect) {\n log.warn('already attempting reconnect, returning early', this.logContext);\n return;\n }\n if (\n this.clientConfiguration?.resumeConnection === ClientConfigSetting.DISABLED ||\n // signaling state could change to closed due to hardware sleep\n // those connections cannot be resumed\n (this.pcManager?.currentState ?? PCTransportState.NEW) === PCTransportState.NEW\n ) {\n this.fullReconnectOnNext = true;\n }\n\n try {\n this.attemptingReconnect = true;\n if (this.fullReconnectOnNext) {\n await this.restartConnection();\n } else {\n await this.resumeConnection(reason);\n }\n this.clearPendingReconnect();\n this.fullReconnectOnNext = false;\n } catch (e) {\n this.reconnectAttempts += 1;\n let recoverable = true;\n if (e instanceof UnexpectedConnectionState) {\n this.log.debug('received unrecoverable error', { ...this.logContext, error: e });\n // unrecoverable\n recoverable = false;\n } else if (!(e instanceof SignalReconnectError)) {\n // cannot resume\n this.fullReconnectOnNext = true;\n }\n\n if (recoverable) {\n this.handleDisconnect('reconnect', ReconnectReason.RR_UNKNOWN);\n } else {\n this.log.info(\n `could not recover connection after ${this.reconnectAttempts} attempts, ${\n Date.now() - this.reconnectStart\n }ms. giving up`,\n this.logContext,\n );\n this.emit(EngineEvent.Disconnected);\n await this.close();\n }\n } finally {\n this.attemptingReconnect = false;\n }\n }\n\n private getNextRetryDelay(context: ReconnectContext) {\n try {\n return this.reconnectPolicy.nextRetryDelayInMs(context);\n } catch (e) {\n this.log.warn('encountered error in reconnect policy', { ...this.logContext, error: e });\n }\n\n // error in user code with provided reconnect policy, stop reconnecting\n return null;\n }\n\n private async restartConnection(regionUrl?: string) {\n try {\n if (!this.url || !this.token) {\n // permanent failure, don't attempt reconnection\n throw new UnexpectedConnectionState('could not reconnect, url or token not saved');\n }\n\n this.log.info(`reconnecting, attempt: ${this.reconnectAttempts}`, this.logContext);\n this.emit(EngineEvent.Restarting);\n\n if (!this.client.isDisconnected) {\n await this.client.sendLeave();\n }\n await this.cleanupPeerConnections();\n await this.cleanupClient();\n\n let joinResponse: JoinResponse;\n try {\n if (!this.signalOpts) {\n this.log.warn(\n 'attempted connection restart, without signal options present',\n this.logContext,\n );\n throw new SignalReconnectError();\n }\n // in case a regionUrl is passed, the region URL takes precedence\n joinResponse = await this.join(regionUrl ?? this.url, this.token, this.signalOpts);\n } catch (e) {\n if (e instanceof ConnectionError && e.reason === ConnectionErrorReason.NotAllowed) {\n throw new UnexpectedConnectionState('could not reconnect, token might be expired');\n }\n throw new SignalReconnectError();\n }\n\n if (this.shouldFailNext) {\n this.shouldFailNext = false;\n throw new Error('simulated failure');\n }\n\n this.client.setReconnected();\n this.emit(EngineEvent.SignalRestarted, joinResponse);\n\n await this.waitForPCReconnected();\n\n // re-check signal connection state before setting engine as resumed\n if (this.client.currentState !== SignalConnectionState.CONNECTED) {\n throw new SignalReconnectError('Signal connection got severed during reconnect');\n }\n\n this.regionUrlProvider?.resetAttempts();\n // reconnect success\n this.emit(EngineEvent.Restarted);\n } catch (error) {\n const nextRegionUrl = await this.regionUrlProvider?.getNextBestRegionUrl();\n if (nextRegionUrl) {\n await this.restartConnection(nextRegionUrl);\n return;\n } else {\n // no more regions to try (or we're not on cloud)\n this.regionUrlProvider?.resetAttempts();\n throw error;\n }\n }\n }\n\n private async resumeConnection(reason?: ReconnectReason): Promise {\n if (!this.url || !this.token) {\n // permanent failure, don't attempt reconnection\n throw new UnexpectedConnectionState('could not reconnect, url or token not saved');\n }\n // trigger publisher reconnect\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('publisher and subscriber connections unset');\n }\n\n this.log.info(`resuming signal connection, attempt ${this.reconnectAttempts}`, this.logContext);\n this.emit(EngineEvent.Resuming);\n let res: ReconnectResponse | undefined;\n try {\n this.setupSignalClientCallbacks();\n res = await this.client.reconnect(this.url, this.token, this.participantSid, reason);\n } catch (error) {\n let message = '';\n if (error instanceof Error) {\n message = error.message;\n this.log.error(error.message, { ...this.logContext, error });\n }\n if (error instanceof ConnectionError && error.reason === ConnectionErrorReason.NotAllowed) {\n throw new UnexpectedConnectionState('could not reconnect, token might be expired');\n }\n if (error instanceof ConnectionError && error.reason === ConnectionErrorReason.LeaveRequest) {\n throw error;\n }\n throw new SignalReconnectError(message);\n }\n this.emit(EngineEvent.SignalResumed);\n\n if (res) {\n const rtcConfig = this.makeRTCConfiguration(res);\n this.pcManager.updateConfiguration(rtcConfig);\n } else {\n this.log.warn('Did not receive reconnect response', this.logContext);\n }\n\n if (this.shouldFailNext) {\n this.shouldFailNext = false;\n throw new Error('simulated failure');\n }\n\n await this.pcManager.triggerIceRestart();\n\n await this.waitForPCReconnected();\n\n // re-check signal connection state before setting engine as resumed\n if (this.client.currentState !== SignalConnectionState.CONNECTED) {\n throw new SignalReconnectError('Signal connection got severed during reconnect');\n }\n\n this.client.setReconnected();\n\n // recreate publish datachannel if it's id is null\n // (for safari https://bugs.webkit.org/show_bug.cgi?id=184688)\n if (this.reliableDC?.readyState === 'open' && this.reliableDC.id === null) {\n this.createDataChannels();\n }\n\n // resume success\n this.emit(EngineEvent.Resumed);\n }\n\n async waitForPCInitialConnection(timeout?: number, abortController?: AbortController) {\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('PC manager is closed');\n }\n await this.pcManager.ensurePCTransportConnection(abortController, timeout);\n }\n\n private async waitForPCReconnected() {\n this.pcState = PCState.Reconnecting;\n\n this.log.debug('waiting for peer connection to reconnect', this.logContext);\n try {\n await sleep(minReconnectWait); // FIXME setTimeout again not ideal for a connection critical path\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('PC manager is closed');\n }\n await this.pcManager.ensurePCTransportConnection(undefined, this.peerConnectionTimeout);\n this.pcState = PCState.Connected;\n } catch (e: any) {\n // TODO do we need a `failed` state here for the PC?\n this.pcState = PCState.Disconnected;\n throw new ConnectionError(\n `could not establish PC connection, ${e.message}`,\n ConnectionErrorReason.InternalError,\n );\n }\n }\n\n waitForRestarted = () => {\n return new Promise((resolve, reject) => {\n if (this.pcState === PCState.Connected) {\n resolve();\n }\n const onRestarted = () => {\n this.off(EngineEvent.Disconnected, onDisconnected);\n resolve();\n };\n const onDisconnected = () => {\n this.off(EngineEvent.Restarted, onRestarted);\n reject();\n };\n this.once(EngineEvent.Restarted, onRestarted);\n this.once(EngineEvent.Disconnected, onDisconnected);\n });\n };\n\n /* @internal */\n async sendDataPacket(packet: DataPacket, kind: DataPacket_Kind) {\n const msg = packet.toBinary();\n\n // make sure we do have a data connection\n await this.ensurePublisherConnected(kind);\n\n const dc = this.dataChannelForKind(kind);\n if (dc) {\n dc.send(msg);\n }\n\n this.updateAndEmitDCBufferStatus(kind);\n }\n\n private updateAndEmitDCBufferStatus = (kind: DataPacket_Kind) => {\n const status = this.isBufferStatusLow(kind);\n if (typeof status !== 'undefined' && status !== this.dcBufferStatus.get(kind)) {\n this.dcBufferStatus.set(kind, status);\n this.emit(EngineEvent.DCBufferStatusChanged, status, kind);\n }\n };\n\n private isBufferStatusLow = (kind: DataPacket_Kind): boolean | undefined => {\n const dc = this.dataChannelForKind(kind);\n if (dc) {\n return dc.bufferedAmount <= dc.bufferedAmountLowThreshold;\n }\n };\n\n /**\n * @internal\n */\n async ensureDataTransportConnected(\n kind: DataPacket_Kind,\n subscriber: boolean = this.subscriberPrimary,\n ) {\n if (!this.pcManager) {\n throw new UnexpectedConnectionState('PC manager is closed');\n }\n const transport = subscriber ? this.pcManager.subscriber : this.pcManager.publisher;\n const transportName = subscriber ? 'Subscriber' : 'Publisher';\n if (!transport) {\n throw new ConnectionError(\n `${transportName} connection not set`,\n ConnectionErrorReason.InternalError,\n );\n }\n\n let needNegotiation = false;\n if (!subscriber && !this.dataChannelForKind(kind, subscriber)) {\n this.createDataChannels();\n needNegotiation = true;\n }\n\n if (\n !needNegotiation &&\n !subscriber &&\n !this.pcManager.publisher.isICEConnected &&\n this.pcManager.publisher.getICEConnectionState() !== 'checking'\n ) {\n needNegotiation = true;\n }\n if (needNegotiation) {\n // start negotiation\n this.negotiate();\n }\n\n const targetChannel = this.dataChannelForKind(kind, subscriber);\n if (targetChannel?.readyState === 'open') {\n return;\n }\n\n // wait until ICE connected\n const endTime = new Date().getTime() + this.peerConnectionTimeout;\n while (new Date().getTime() < endTime) {\n if (\n transport.isICEConnected &&\n this.dataChannelForKind(kind, subscriber)?.readyState === 'open'\n ) {\n return;\n }\n await sleep(50);\n }\n\n throw new ConnectionError(\n `could not establish ${transportName} connection, state: ${transport.getICEConnectionState()}`,\n ConnectionErrorReason.InternalError,\n );\n }\n\n private async ensurePublisherConnected(kind: DataPacket_Kind) {\n if (!this.publisherConnectionPromise) {\n this.publisherConnectionPromise = this.ensureDataTransportConnected(kind, false);\n }\n await this.publisherConnectionPromise;\n }\n\n /* @internal */\n verifyTransport(): boolean {\n if (!this.pcManager) {\n return false;\n }\n // primary connection\n if (this.pcManager.currentState !== PCTransportState.CONNECTED) {\n return false;\n }\n\n // ensure signal is connected\n if (!this.client.ws || this.client.ws.readyState === WebSocket.CLOSED) {\n return false;\n }\n return true;\n }\n\n /** @internal */\n async negotiate(): Promise {\n // observe signal state\n return new Promise(async (resolve, reject) => {\n if (!this.pcManager) {\n reject(new NegotiationError('PC manager is closed'));\n return;\n }\n\n this.pcManager.requirePublisher();\n // don't negotiate without any transceivers or data channel, it will generate sdp without ice frag then negotiate failed\n if (\n this.pcManager.publisher.getTransceivers().length == 0 &&\n !this.lossyDC &&\n !this.reliableDC\n ) {\n this.createDataChannels();\n }\n\n const abortController = new AbortController();\n\n const handleClosed = () => {\n abortController.abort();\n this.log.debug('engine disconnected while negotiation was ongoing', this.logContext);\n resolve();\n return;\n };\n\n if (this.isClosed) {\n reject('cannot negotiate on closed engine');\n }\n this.on(EngineEvent.Closing, handleClosed);\n\n this.pcManager.publisher.once(\n PCEvents.RTPVideoPayloadTypes,\n (rtpTypes: MediaAttributes['rtp']) => {\n const rtpMap = new Map();\n rtpTypes.forEach((rtp) => {\n const codec = rtp.codec.toLowerCase();\n if (isVideoCodec(codec)) {\n rtpMap.set(rtp.payload, codec);\n }\n });\n this.emit(EngineEvent.RTPVideoMapUpdate, rtpMap);\n },\n );\n\n try {\n await this.pcManager.negotiate(abortController);\n resolve();\n } catch (e: any) {\n if (e instanceof NegotiationError) {\n this.fullReconnectOnNext = true;\n }\n this.handleDisconnect('negotiation', ReconnectReason.RR_UNKNOWN);\n reject(e);\n } finally {\n this.off(EngineEvent.Closing, handleClosed);\n }\n });\n }\n\n dataChannelForKind(kind: DataPacket_Kind, sub?: boolean): RTCDataChannel | undefined {\n if (!sub) {\n if (kind === DataPacket_Kind.LOSSY) {\n return this.lossyDC;\n }\n if (kind === DataPacket_Kind.RELIABLE) {\n return this.reliableDC;\n }\n } else {\n if (kind === DataPacket_Kind.LOSSY) {\n return this.lossyDCSub;\n }\n if (kind === DataPacket_Kind.RELIABLE) {\n return this.reliableDCSub;\n }\n }\n }\n\n /** @internal */\n sendSyncState(remoteTracks: RemoteTrackPublication[], localTracks: LocalTrackPublication[]) {\n if (!this.pcManager) {\n this.log.warn('sync state cannot be sent without peer connection setup', this.logContext);\n return;\n }\n const previousAnswer = this.pcManager.subscriber.getLocalDescription();\n const previousOffer = this.pcManager.subscriber.getRemoteDescription();\n\n /* 1. autosubscribe on, so subscribed tracks = all tracks - unsub tracks,\n in this case, we send unsub tracks, so server add all tracks to this\n subscribe pc and unsub special tracks from it.\n 2. autosubscribe off, we send subscribed tracks.\n */\n const autoSubscribe = this.signalOpts?.autoSubscribe ?? true;\n const trackSids = new Array();\n const trackSidsDisabled = new Array();\n\n remoteTracks.forEach((track) => {\n if (track.isDesired !== autoSubscribe) {\n trackSids.push(track.trackSid);\n }\n if (!track.isEnabled) {\n trackSidsDisabled.push(track.trackSid);\n }\n });\n\n this.client.sendSyncState(\n new SyncState({\n answer: previousAnswer\n ? toProtoSessionDescription({\n sdp: previousAnswer.sdp,\n type: previousAnswer.type,\n })\n : undefined,\n offer: previousOffer\n ? toProtoSessionDescription({\n sdp: previousOffer.sdp,\n type: previousOffer.type,\n })\n : undefined,\n subscription: new UpdateSubscription({\n trackSids,\n subscribe: !autoSubscribe,\n participantTracks: [],\n }),\n publishTracks: getTrackPublicationInfo(localTracks),\n dataChannels: this.dataChannelsInfo(),\n trackSidsDisabled,\n }),\n );\n }\n\n /* @internal */\n failNext() {\n // debugging method to fail the next reconnect/resume attempt\n this.shouldFailNext = true;\n }\n\n private dataChannelsInfo(): DataChannelInfo[] {\n const infos: DataChannelInfo[] = [];\n const getInfo = (dc: RTCDataChannel | undefined, target: SignalTarget) => {\n if (dc?.id !== undefined && dc.id !== null) {\n infos.push(\n new DataChannelInfo({\n label: dc.label,\n id: dc.id,\n target,\n }),\n );\n }\n };\n getInfo(this.dataChannelForKind(DataPacket_Kind.LOSSY), SignalTarget.PUBLISHER);\n getInfo(this.dataChannelForKind(DataPacket_Kind.RELIABLE), SignalTarget.PUBLISHER);\n getInfo(this.dataChannelForKind(DataPacket_Kind.LOSSY, true), SignalTarget.SUBSCRIBER);\n getInfo(this.dataChannelForKind(DataPacket_Kind.RELIABLE, true), SignalTarget.SUBSCRIBER);\n return infos;\n }\n\n private clearReconnectTimeout() {\n if (this.reconnectTimeout) {\n CriticalTimers.clearTimeout(this.reconnectTimeout);\n }\n }\n\n private clearPendingReconnect() {\n this.clearReconnectTimeout();\n this.reconnectAttempts = 0;\n }\n\n private handleBrowserOnLine = () => {\n // in case the engine is currently reconnecting, attempt a reconnect immediately after the browser state has changed to 'onLine'\n if (this.client.currentState === SignalConnectionState.RECONNECTING) {\n this.clearReconnectTimeout();\n this.attemptReconnect(ReconnectReason.RR_SIGNAL_DISCONNECTED);\n }\n };\n\n private registerOnLineListener() {\n if (isWeb()) {\n window.addEventListener('online', this.handleBrowserOnLine);\n }\n }\n\n private deregisterOnLineListener() {\n if (isWeb()) {\n window.removeEventListener('online', this.handleBrowserOnLine);\n }\n }\n}\n\nclass SignalReconnectError extends Error {}\n\nexport type EngineEventCallbacks = {\n connected: (joinResp: JoinResponse) => void;\n disconnected: (reason?: DisconnectReason) => void;\n resuming: () => void;\n resumed: () => void;\n restarting: () => void;\n restarted: () => void;\n signalResumed: () => void;\n signalRestarted: (joinResp: JoinResponse) => void;\n closing: () => void;\n mediaTrackAdded: (\n track: MediaStreamTrack,\n streams: MediaStream,\n receiver: RTCRtpReceiver,\n ) => void;\n activeSpeakersUpdate: (speakers: Array) => void;\n dataPacketReceived: (packet: DataPacket) => void;\n transcriptionReceived: (transcription: Transcription) => void;\n transportsCreated: (publisher: PCTransport, subscriber: PCTransport) => void;\n /** @internal */\n trackSenderAdded: (track: Track, sender: RTCRtpSender) => void;\n rtpVideoMapUpdate: (rtpMap: Map) => void;\n dcBufferStatusChanged: (isLow: boolean, kind: DataPacket_Kind) => void;\n participantUpdate: (infos: ParticipantInfo[]) => void;\n roomUpdate: (room: RoomModel) => void;\n connectionQualityUpdate: (update: ConnectionQualityUpdate) => void;\n speakersChanged: (speakerUpdates: SpeakerInfo[]) => void;\n streamStateChanged: (update: StreamStateUpdate) => void;\n subscriptionError: (resp: SubscriptionResponse) => void;\n subscriptionPermissionUpdate: (update: SubscriptionPermissionUpdate) => void;\n subscribedQualityUpdate: (update: SubscribedQualityUpdate) => void;\n localTrackUnpublished: (unpublishedResponse: TrackUnpublishedResponse) => void;\n localTrackSubscribed: (trackSid: string) => void;\n remoteMute: (trackSid: string, muted: boolean) => void;\n offline: () => void;\n signalRequestResponse: (response: RequestResponse) => void;\n};\n\nfunction supportOptionalDatachannel(protocol: number | undefined): boolean {\n return protocol !== undefined && protocol > 13;\n}\n\nfunction applyUserDataCompat(newObj: DataPacket, oldObj: UserPacket) {\n const participantIdentity = newObj.participantIdentity\n ? newObj.participantIdentity\n : oldObj.participantIdentity;\n newObj.participantIdentity = participantIdentity;\n oldObj.participantIdentity = participantIdentity;\n\n const destinationIdentities =\n newObj.destinationIdentities.length !== 0\n ? newObj.destinationIdentities\n : oldObj.destinationIdentities;\n newObj.destinationIdentities = destinationIdentities;\n oldObj.destinationIdentities = destinationIdentities;\n}\n","import type { RegionInfo, RegionSettings } from '@livekit/protocol';\nimport log from '../logger';\nimport { ConnectionError, ConnectionErrorReason } from './errors';\nimport { isCloud } from './utils';\n\nexport class RegionUrlProvider {\n private serverUrl: URL;\n\n private token: string;\n\n private regionSettings: RegionSettings | undefined;\n\n private lastUpdateAt: number = 0;\n\n private settingsCacheTime = 3_000;\n\n private attemptedRegions: RegionInfo[] = [];\n\n constructor(url: string, token: string) {\n this.serverUrl = new URL(url);\n this.token = token;\n }\n\n updateToken(token: string) {\n this.token = token;\n }\n\n isCloud() {\n return isCloud(this.serverUrl);\n }\n\n getServerUrl() {\n return this.serverUrl;\n }\n\n async getNextBestRegionUrl(abortSignal?: AbortSignal) {\n if (!this.isCloud()) {\n throw Error('region availability is only supported for LiveKit Cloud domains');\n }\n if (!this.regionSettings || Date.now() - this.lastUpdateAt > this.settingsCacheTime) {\n this.regionSettings = await this.fetchRegionSettings(abortSignal);\n }\n const regionsLeft = this.regionSettings.regions.filter(\n (region) => !this.attemptedRegions.find((attempted) => attempted.url === region.url),\n );\n if (regionsLeft.length > 0) {\n const nextRegion = regionsLeft[0];\n this.attemptedRegions.push(nextRegion);\n log.debug(`next region: ${nextRegion.region}`);\n return nextRegion.url;\n } else {\n return null;\n }\n }\n\n resetAttempts() {\n this.attemptedRegions = [];\n }\n\n /* @internal */\n async fetchRegionSettings(signal?: AbortSignal) {\n const regionSettingsResponse = await fetch(`${getCloudConfigUrl(this.serverUrl)}/regions`, {\n headers: { authorization: `Bearer ${this.token}` },\n signal,\n });\n if (regionSettingsResponse.ok) {\n const regionSettings = (await regionSettingsResponse.json()) as RegionSettings;\n this.lastUpdateAt = Date.now();\n return regionSettings;\n } else {\n throw new ConnectionError(\n `Could not fetch region settings: ${regionSettingsResponse.statusText}`,\n regionSettingsResponse.status === 401\n ? ConnectionErrorReason.NotAllowed\n : ConnectionErrorReason.InternalError,\n regionSettingsResponse.status,\n );\n }\n }\n\n setServerReportedRegions(regions: RegionSettings) {\n this.regionSettings = regions;\n this.lastUpdateAt = Date.now();\n }\n}\n\nfunction getCloudConfigUrl(serverUrl: URL) {\n return `${serverUrl.protocol.replace('ws', 'http')}//${serverUrl.host}/settings`;\n}\n","// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { RpcError as RpcError_Proto } from '@livekit/protocol';\n\n/** Parameters for initiating an RPC call */\nexport interface PerformRpcParams {\n /** The `identity` of the destination participant */\n destinationIdentity: string;\n /** The method name to call */\n method: string;\n /** The method payload */\n payload: string;\n /** Timeout for receiving a response after initial connection (milliseconds). Default: 10000 */\n responseTimeout?: number;\n}\n\n/**\n * Data passed to method handler for incoming RPC invocations\n */\nexport interface RpcInvocationData {\n /**\n * The unique request ID. Will match at both sides of the call, useful for debugging or logging.\n */\n requestId: string;\n\n /**\n * The unique participant identity of the caller.\n */\n callerIdentity: string;\n\n /**\n * The payload of the request. User-definable format, typically JSON.\n */\n payload: string;\n\n /**\n * The maximum time the caller will wait for a response.\n */\n responseTimeout: number;\n}\n\n/**\n * Specialized error handling for RPC methods.\n *\n * Instances of this type, when thrown in a method handler, will have their `message`\n * serialized and sent across the wire. The sender will receive an equivalent error on the other side.\n *\n * Built-in types are included but developers may use any string, with a max length of 256 bytes.\n */\n\nexport class RpcError extends Error {\n static MAX_MESSAGE_BYTES = 256;\n\n static MAX_DATA_BYTES = 15360; // 15 KB\n\n code: number;\n\n data?: string;\n\n /**\n * Creates an error object with the given code and message, plus an optional data payload.\n *\n * If thrown in an RPC method handler, the error will be sent back to the caller.\n *\n * Error codes 1001-1999 are reserved for built-in errors (see RpcError.ErrorCode for their meanings).\n */\n constructor(code: number, message: string, data?: string) {\n super(message);\n this.code = code;\n this.message = truncateBytes(message, RpcError.MAX_MESSAGE_BYTES);\n this.data = data ? truncateBytes(data, RpcError.MAX_DATA_BYTES) : undefined;\n }\n\n /**\n * @internal\n */\n static fromProto(proto: RpcError_Proto) {\n return new RpcError(proto.code, proto.message, proto.data);\n }\n\n /**\n * @internal\n */\n toProto() {\n return new RpcError_Proto({\n code: this.code as number,\n message: this.message,\n data: this.data,\n });\n }\n\n static ErrorCode = {\n APPLICATION_ERROR: 1500,\n CONNECTION_TIMEOUT: 1501,\n RESPONSE_TIMEOUT: 1502,\n RECIPIENT_DISCONNECTED: 1503,\n RESPONSE_PAYLOAD_TOO_LARGE: 1504,\n SEND_FAILED: 1505,\n\n UNSUPPORTED_METHOD: 1400,\n RECIPIENT_NOT_FOUND: 1401,\n REQUEST_PAYLOAD_TOO_LARGE: 1402,\n UNSUPPORTED_SERVER: 1403,\n UNSUPPORTED_VERSION: 1404,\n } as const;\n\n /**\n * @internal\n */\n static ErrorMessage: Record = {\n APPLICATION_ERROR: 'Application error in method handler',\n CONNECTION_TIMEOUT: 'Connection timeout',\n RESPONSE_TIMEOUT: 'Response timeout',\n RECIPIENT_DISCONNECTED: 'Recipient disconnected',\n RESPONSE_PAYLOAD_TOO_LARGE: 'Response payload too large',\n SEND_FAILED: 'Failed to send',\n\n UNSUPPORTED_METHOD: 'Method not supported at destination',\n RECIPIENT_NOT_FOUND: 'Recipient not found',\n REQUEST_PAYLOAD_TOO_LARGE: 'Request payload too large',\n UNSUPPORTED_SERVER: 'RPC not supported by server',\n UNSUPPORTED_VERSION: 'Unsupported RPC version',\n } as const;\n\n /**\n * Creates an error object from the code, with an auto-populated message.\n *\n * @internal\n */\n static builtIn(key: keyof typeof RpcError.ErrorCode, data?: string): RpcError {\n return new RpcError(RpcError.ErrorCode[key], RpcError.ErrorMessage[key], data);\n }\n}\n\n/*\n * Maximum payload size for RPC requests and responses. If a payload exceeds this size,\n * the RPC call will fail with a REQUEST_PAYLOAD_TOO_LARGE(1402) or RESPONSE_PAYLOAD_TOO_LARGE(1504) error.\n */\nexport const MAX_PAYLOAD_BYTES = 15360; // 15 KB\n\n/**\n * @internal\n */\nexport function byteLength(str: string): number {\n const encoder = new TextEncoder();\n return encoder.encode(str).length;\n}\n\n/**\n * @internal\n */\nexport function truncateBytes(str: string, maxBytes: number): string {\n if (byteLength(str) <= maxBytes) {\n return str;\n }\n\n let low = 0;\n let high = str.length;\n const encoder = new TextEncoder();\n\n while (low < high) {\n const mid = Math.floor((low + high + 1) / 2);\n if (encoder.encode(str.slice(0, mid)).length <= maxBytes) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n\n return str.slice(0, low);\n}\n","import { TrackEvent } from '../events';\nimport { monitorFrequency } from '../stats';\nimport type { LoggerOptions } from '../types';\nimport { Track } from './Track';\nimport { supportsSynchronizationSources } from './utils';\n\nexport default abstract class RemoteTrack<\n TrackKind extends Track.Kind = Track.Kind,\n> extends Track {\n /** @internal */\n receiver: RTCRtpReceiver | undefined;\n\n constructor(\n mediaTrack: MediaStreamTrack,\n sid: string,\n kind: TrackKind,\n receiver: RTCRtpReceiver,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, kind, loggerOptions);\n\n this.sid = sid;\n this.receiver = receiver;\n }\n\n /** @internal */\n setMuted(muted: boolean) {\n if (this.isMuted !== muted) {\n this.isMuted = muted;\n this._mediaStreamTrack.enabled = !muted;\n this.emit(muted ? TrackEvent.Muted : TrackEvent.Unmuted, this);\n }\n }\n\n /** @internal */\n setMediaStream(stream: MediaStream) {\n // this is needed to determine when the track is finished\n this.mediaStream = stream;\n const onRemoveTrack = (event: MediaStreamTrackEvent) => {\n if (event.track === this._mediaStreamTrack) {\n stream.removeEventListener('removetrack', onRemoveTrack);\n if (this.receiver && 'playoutDelayHint' in this.receiver) {\n this.receiver.playoutDelayHint = undefined;\n }\n this.receiver = undefined;\n this._currentBitrate = 0;\n this.emit(TrackEvent.Ended, this);\n }\n };\n stream.addEventListener('removetrack', onRemoveTrack);\n }\n\n start() {\n this.startMonitor();\n // use `enabled` of track to enable re-use of transceiver\n super.enable();\n }\n\n stop() {\n this.stopMonitor();\n // use `enabled` of track to enable re-use of transceiver\n super.disable();\n }\n\n /**\n * Gets the RTCStatsReport for the RemoteTrack's underlying RTCRtpReceiver\n * See https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport\n *\n * @returns Promise | undefined\n */\n async getRTCStatsReport(): Promise {\n if (!this.receiver?.getStats) {\n return;\n }\n const statsReport = await this.receiver.getStats();\n return statsReport;\n }\n\n /**\n * Allows to set a playout delay (in seconds) for this track.\n * A higher value allows for more buffering of the track in the browser\n * and will result in a delay of media being played back of `delayInSeconds`\n */\n setPlayoutDelay(delayInSeconds: number): void {\n if (this.receiver) {\n if ('playoutDelayHint' in this.receiver) {\n this.receiver.playoutDelayHint = delayInSeconds;\n } else {\n this.log.warn('Playout delay not supported in this browser');\n }\n } else {\n this.log.warn('Cannot set playout delay, track already ended');\n }\n }\n\n /**\n * Returns the current playout delay (in seconds) of this track.\n */\n getPlayoutDelay(): number {\n if (this.receiver) {\n if ('playoutDelayHint' in this.receiver) {\n return this.receiver.playoutDelayHint as number;\n } else {\n this.log.warn('Playout delay not supported in this browser');\n }\n } else {\n this.log.warn('Cannot get playout delay, track already ended');\n }\n return 0;\n }\n\n /* @internal */\n startMonitor() {\n if (!this.monitorInterval) {\n this.monitorInterval = setInterval(() => this.monitorReceiver(), monitorFrequency);\n }\n if (supportsSynchronizationSources()) {\n this.registerTimeSyncUpdate();\n }\n }\n\n protected abstract monitorReceiver(): void;\n\n registerTimeSyncUpdate() {\n const loop = () => {\n this.timeSyncHandle = requestAnimationFrame(() => loop());\n const sources = this.receiver?.getSynchronizationSources()[0];\n if (sources) {\n const { timestamp, rtpTimestamp } = sources;\n if (rtpTimestamp && this.rtpTimestamp !== rtpTimestamp) {\n this.emit(TrackEvent.TimeSyncUpdate, { timestamp, rtpTimestamp });\n this.rtpTimestamp = rtpTimestamp;\n }\n }\n };\n loop();\n }\n}\n","import { TrackEvent } from '../events';\nimport type { AudioReceiverStats } from '../stats';\nimport { computeBitrate } from '../stats';\nimport type { LoggerOptions } from '../types';\nimport { isReactNative, supportsSetSinkId } from '../utils';\nimport RemoteTrack from './RemoteTrack';\nimport { Track } from './Track';\nimport type { AudioOutputOptions } from './options';\n\nexport default class RemoteAudioTrack extends RemoteTrack {\n private prevStats?: AudioReceiverStats;\n\n private elementVolume: number | undefined;\n\n private audioContext?: AudioContext;\n\n private gainNode?: GainNode;\n\n private sourceNode?: MediaStreamAudioSourceNode;\n\n private webAudioPluginNodes: AudioNode[];\n\n private sinkId?: string;\n\n constructor(\n mediaTrack: MediaStreamTrack,\n sid: string,\n receiver: RTCRtpReceiver,\n audioContext?: AudioContext,\n audioOutput?: AudioOutputOptions,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, sid, Track.Kind.Audio, receiver, loggerOptions);\n this.audioContext = audioContext;\n this.webAudioPluginNodes = [];\n if (audioOutput) {\n this.sinkId = audioOutput.deviceId;\n }\n }\n\n /**\n * sets the volume for all attached audio elements\n */\n setVolume(volume: number) {\n for (const el of this.attachedElements) {\n if (this.audioContext) {\n this.gainNode?.gain.setTargetAtTime(volume, 0, 0.1);\n } else {\n el.volume = volume;\n }\n }\n if (isReactNative()) {\n // @ts-ignore\n this._mediaStreamTrack._setVolume(volume);\n }\n this.elementVolume = volume;\n }\n\n /**\n * gets the volume of attached audio elements (loudest)\n */\n getVolume(): number {\n if (this.elementVolume) {\n return this.elementVolume;\n }\n if (isReactNative()) {\n // RN volume value defaults to 1.0 if hasn't been changed.\n return 1.0;\n }\n let highestVolume = 0;\n this.attachedElements.forEach((element) => {\n if (element.volume > highestVolume) {\n highestVolume = element.volume;\n }\n });\n return highestVolume;\n }\n\n /**\n * calls setSinkId on all attached elements, if supported\n * @param deviceId audio output device\n */\n async setSinkId(deviceId: string) {\n this.sinkId = deviceId;\n await Promise.all(\n this.attachedElements.map((elm) => {\n if (!supportsSetSinkId(elm)) {\n return;\n }\n /* @ts-ignore */\n return elm.setSinkId(deviceId) as Promise;\n }),\n );\n }\n\n attach(): HTMLMediaElement;\n attach(element: HTMLMediaElement): HTMLMediaElement;\n attach(element?: HTMLMediaElement): HTMLMediaElement {\n const needsNewWebAudioConnection = this.attachedElements.length === 0;\n if (!element) {\n element = super.attach();\n } else {\n super.attach(element);\n }\n\n if (this.sinkId && supportsSetSinkId(element)) {\n /* @ts-ignore */\n element.setSinkId(this.sinkId);\n }\n if (this.audioContext && needsNewWebAudioConnection) {\n this.log.debug('using audio context mapping', this.logContext);\n this.connectWebAudio(this.audioContext, element);\n element.volume = 0;\n element.muted = true;\n }\n\n if (this.elementVolume) {\n // make sure volume setting is being applied to the newly attached element\n this.setVolume(this.elementVolume);\n }\n\n return element;\n }\n\n /**\n * Detaches from all attached elements\n */\n detach(): HTMLMediaElement[];\n\n /**\n * Detach from a single element\n * @param element\n */\n detach(element: HTMLMediaElement): HTMLMediaElement;\n detach(element?: HTMLMediaElement): HTMLMediaElement | HTMLMediaElement[] {\n let detached: HTMLMediaElement | HTMLMediaElement[];\n if (!element) {\n detached = super.detach();\n this.disconnectWebAudio();\n } else {\n detached = super.detach(element);\n // if there are still any attached elements after detaching, connect webaudio to the first element that's left\n // disconnect webaudio otherwise\n if (this.audioContext) {\n if (this.attachedElements.length > 0) {\n this.connectWebAudio(this.audioContext, this.attachedElements[0]);\n } else {\n this.disconnectWebAudio();\n }\n }\n }\n return detached;\n }\n\n /**\n * @internal\n * @experimental\n */\n setAudioContext(audioContext: AudioContext | undefined) {\n this.audioContext = audioContext;\n if (audioContext && this.attachedElements.length > 0) {\n this.connectWebAudio(audioContext, this.attachedElements[0]);\n } else if (!audioContext) {\n this.disconnectWebAudio();\n }\n }\n\n /**\n * @internal\n * @experimental\n * @param {AudioNode[]} nodes - An array of WebAudio nodes. These nodes should not be connected to each other when passed, as the sdk will take care of connecting them in the order of the array.\n */\n setWebAudioPlugins(nodes: AudioNode[]) {\n this.webAudioPluginNodes = nodes;\n if (this.attachedElements.length > 0 && this.audioContext) {\n this.connectWebAudio(this.audioContext, this.attachedElements[0]);\n }\n }\n\n private connectWebAudio(context: AudioContext, element: HTMLMediaElement) {\n this.disconnectWebAudio();\n // @ts-ignore attached elements always have a srcObject set\n this.sourceNode = context.createMediaStreamSource(element.srcObject);\n let lastNode: AudioNode = this.sourceNode;\n this.webAudioPluginNodes.forEach((node) => {\n lastNode.connect(node);\n lastNode = node;\n });\n this.gainNode = context.createGain();\n lastNode.connect(this.gainNode);\n this.gainNode.connect(context.destination);\n\n if (this.elementVolume) {\n this.gainNode.gain.setTargetAtTime(this.elementVolume, 0, 0.1);\n }\n\n // try to resume the context if it isn't running already\n if (context.state !== 'running') {\n context\n .resume()\n .then(() => {\n if (context.state !== 'running') {\n this.emit(\n TrackEvent.AudioPlaybackFailed,\n new Error(\"Audio Context couldn't be started automatically\"),\n );\n }\n })\n .catch((e) => {\n this.emit(TrackEvent.AudioPlaybackFailed, e);\n });\n }\n }\n\n private disconnectWebAudio() {\n this.gainNode?.disconnect();\n this.sourceNode?.disconnect();\n this.gainNode = undefined;\n this.sourceNode = undefined;\n }\n\n protected monitorReceiver = async () => {\n if (!this.receiver) {\n this._currentBitrate = 0;\n return;\n }\n const stats = await this.getReceiverStats();\n\n if (stats && this.prevStats && this.receiver) {\n this._currentBitrate = computeBitrate(stats, this.prevStats);\n }\n\n this.prevStats = stats;\n };\n\n async getReceiverStats(): Promise {\n if (!this.receiver || !this.receiver.getStats) {\n return;\n }\n\n const stats = await this.receiver.getStats();\n let receiverStats: AudioReceiverStats | undefined;\n stats.forEach((v) => {\n if (v.type === 'inbound-rtp') {\n receiverStats = {\n type: 'audio',\n streamId: v.id,\n timestamp: v.timestamp,\n jitter: v.jitter,\n bytesReceived: v.bytesReceived,\n concealedSamples: v.concealedSamples,\n concealmentEvents: v.concealmentEvents,\n silentConcealedSamples: v.silentConcealedSamples,\n silentConcealmentEvents: v.silentConcealmentEvents,\n totalAudioEnergy: v.totalAudioEnergy,\n totalSamplesDuration: v.totalSamplesDuration,\n };\n }\n });\n return receiverStats;\n }\n}\n","import { debounce } from 'ts-debounce';\nimport { TrackEvent } from '../events';\nimport type { VideoReceiverStats } from '../stats';\nimport { computeBitrate } from '../stats';\nimport CriticalTimers from '../timers';\nimport type { LoggerOptions } from '../types';\nimport type { ObservableMediaElement } from '../utils';\nimport { getDevicePixelRatio, getIntersectionObserver, getResizeObserver, isWeb } from '../utils';\nimport RemoteTrack from './RemoteTrack';\nimport { Track, attachToElement, detachTrack } from './Track';\nimport type { AdaptiveStreamSettings } from './types';\n\nconst REACTION_DELAY = 100;\n\nexport default class RemoteVideoTrack extends RemoteTrack {\n private prevStats?: VideoReceiverStats;\n\n private elementInfos: ElementInfo[] = [];\n\n private adaptiveStreamSettings?: AdaptiveStreamSettings;\n\n private lastVisible?: boolean;\n\n private lastDimensions?: Track.Dimensions;\n\n constructor(\n mediaTrack: MediaStreamTrack,\n sid: string,\n receiver: RTCRtpReceiver,\n adaptiveStreamSettings?: AdaptiveStreamSettings,\n loggerOptions?: LoggerOptions,\n ) {\n super(mediaTrack, sid, Track.Kind.Video, receiver, loggerOptions);\n this.adaptiveStreamSettings = adaptiveStreamSettings;\n }\n\n get isAdaptiveStream(): boolean {\n return this.adaptiveStreamSettings !== undefined;\n }\n\n /**\n * Note: When using adaptiveStream, you need to use remoteVideoTrack.attach() to add the track to a HTMLVideoElement, otherwise your video tracks might never start\n */\n get mediaStreamTrack() {\n return this._mediaStreamTrack;\n }\n\n /** @internal */\n setMuted(muted: boolean) {\n super.setMuted(muted);\n\n this.attachedElements.forEach((element) => {\n // detach or attach\n if (muted) {\n detachTrack(this._mediaStreamTrack, element);\n } else {\n attachToElement(this._mediaStreamTrack, element);\n }\n });\n }\n\n attach(): HTMLMediaElement;\n attach(element: HTMLMediaElement): HTMLMediaElement;\n attach(element?: HTMLMediaElement): HTMLMediaElement {\n if (!element) {\n element = super.attach();\n } else {\n super.attach(element);\n }\n\n // It's possible attach is called multiple times on an element. When that's\n // the case, we'd want to avoid adding duplicate elementInfos\n if (\n this.adaptiveStreamSettings &&\n this.elementInfos.find((info) => info.element === element) === undefined\n ) {\n const elementInfo = new HTMLElementInfo(element);\n this.observeElementInfo(elementInfo);\n }\n return element;\n }\n\n /**\n * Observe an ElementInfo for changes when adaptive streaming.\n * @param elementInfo\n * @internal\n */\n observeElementInfo(elementInfo: ElementInfo) {\n if (\n this.adaptiveStreamSettings &&\n this.elementInfos.find((info) => info === elementInfo) === undefined\n ) {\n elementInfo.handleResize = () => {\n this.debouncedHandleResize();\n };\n elementInfo.handleVisibilityChanged = () => {\n this.updateVisibility();\n };\n this.elementInfos.push(elementInfo);\n elementInfo.observe();\n // trigger the first resize update cycle\n // if the tab is backgrounded, the initial resize event does not fire until\n // the tab comes into focus for the first time.\n this.debouncedHandleResize();\n this.updateVisibility();\n } else {\n this.log.warn('visibility resize observer not triggered', this.logContext);\n }\n }\n\n /**\n * Stop observing an ElementInfo for changes.\n * @param elementInfo\n * @internal\n */\n stopObservingElementInfo(elementInfo: ElementInfo) {\n if (!this.isAdaptiveStream) {\n this.log.warn('stopObservingElementInfo ignored', this.logContext);\n return;\n }\n const stopElementInfos = this.elementInfos.filter((info) => info === elementInfo);\n for (const info of stopElementInfos) {\n info.stopObserving();\n }\n this.elementInfos = this.elementInfos.filter((info) => info !== elementInfo);\n this.updateVisibility();\n this.debouncedHandleResize();\n }\n\n detach(): HTMLMediaElement[];\n detach(element: HTMLMediaElement): HTMLMediaElement;\n detach(element?: HTMLMediaElement): HTMLMediaElement | HTMLMediaElement[] {\n let detachedElements: HTMLMediaElement[] = [];\n if (element) {\n this.stopObservingElement(element);\n return super.detach(element);\n }\n detachedElements = super.detach();\n\n for (const e of detachedElements) {\n this.stopObservingElement(e);\n }\n\n return detachedElements;\n }\n\n /** @internal */\n getDecoderImplementation(): string | undefined {\n return this.prevStats?.decoderImplementation;\n }\n\n protected monitorReceiver = async () => {\n if (!this.receiver) {\n this._currentBitrate = 0;\n return;\n }\n const stats = await this.getReceiverStats();\n\n if (stats && this.prevStats && this.receiver) {\n this._currentBitrate = computeBitrate(stats, this.prevStats);\n }\n\n this.prevStats = stats;\n };\n\n async getReceiverStats(): Promise {\n if (!this.receiver || !this.receiver.getStats) {\n return;\n }\n\n const stats = await this.receiver.getStats();\n let receiverStats: VideoReceiverStats | undefined;\n let codecID = '';\n let codecs = new Map();\n stats.forEach((v) => {\n if (v.type === 'inbound-rtp') {\n codecID = v.codecId;\n receiverStats = {\n type: 'video',\n streamId: v.id,\n framesDecoded: v.framesDecoded,\n framesDropped: v.framesDropped,\n framesReceived: v.framesReceived,\n packetsReceived: v.packetsReceived,\n packetsLost: v.packetsLost,\n frameWidth: v.frameWidth,\n frameHeight: v.frameHeight,\n pliCount: v.pliCount,\n firCount: v.firCount,\n nackCount: v.nackCount,\n jitter: v.jitter,\n timestamp: v.timestamp,\n bytesReceived: v.bytesReceived,\n decoderImplementation: v.decoderImplementation,\n };\n } else if (v.type === 'codec') {\n codecs.set(v.id, v);\n }\n });\n if (receiverStats && codecID !== '' && codecs.get(codecID)) {\n receiverStats.mimeType = codecs.get(codecID).mimeType;\n }\n return receiverStats;\n }\n\n private stopObservingElement(element: HTMLMediaElement) {\n const stopElementInfos = this.elementInfos.filter((info) => info.element === element);\n for (const info of stopElementInfos) {\n this.stopObservingElementInfo(info);\n }\n }\n\n protected async handleAppVisibilityChanged() {\n await super.handleAppVisibilityChanged();\n if (!this.isAdaptiveStream) return;\n this.updateVisibility();\n }\n\n private readonly debouncedHandleResize = debounce(() => {\n this.updateDimensions();\n }, REACTION_DELAY);\n\n private updateVisibility() {\n const lastVisibilityChange = this.elementInfos.reduce(\n (prev, info) => Math.max(prev, info.visibilityChangedAt || 0),\n 0,\n );\n\n const backgroundPause =\n (this.adaptiveStreamSettings?.pauseVideoInBackground ?? true) // default to true\n ? this.isInBackground\n : false;\n const isPiPMode = this.elementInfos.some((info) => info.pictureInPicture);\n const isVisible =\n (this.elementInfos.some((info) => info.visible) && !backgroundPause) || isPiPMode;\n\n if (this.lastVisible === isVisible) {\n return;\n }\n\n if (!isVisible && Date.now() - lastVisibilityChange < REACTION_DELAY) {\n // delay hidden events\n CriticalTimers.setTimeout(() => {\n this.updateVisibility();\n }, REACTION_DELAY);\n return;\n }\n\n this.lastVisible = isVisible;\n this.emit(TrackEvent.VisibilityChanged, isVisible, this);\n }\n\n private updateDimensions() {\n let maxWidth = 0;\n let maxHeight = 0;\n const pixelDensity = this.getPixelDensity();\n for (const info of this.elementInfos) {\n const currentElementWidth = info.width() * pixelDensity;\n const currentElementHeight = info.height() * pixelDensity;\n if (currentElementWidth + currentElementHeight > maxWidth + maxHeight) {\n maxWidth = currentElementWidth;\n maxHeight = currentElementHeight;\n }\n }\n\n if (this.lastDimensions?.width === maxWidth && this.lastDimensions?.height === maxHeight) {\n return;\n }\n\n this.lastDimensions = {\n width: maxWidth,\n height: maxHeight,\n };\n\n this.emit(TrackEvent.VideoDimensionsChanged, this.lastDimensions, this);\n }\n\n private getPixelDensity(): number {\n const pixelDensity = this.adaptiveStreamSettings?.pixelDensity;\n if (pixelDensity === 'screen') {\n return getDevicePixelRatio();\n } else if (!pixelDensity) {\n // when unset, we'll pick a sane default here.\n // for higher pixel density devices (mobile phones, etc), we'll use 2\n // otherwise it defaults to 1\n const devicePixelRatio = getDevicePixelRatio();\n if (devicePixelRatio > 2) {\n return 2;\n } else {\n return 1;\n }\n }\n return pixelDensity;\n }\n}\n\nexport interface ElementInfo {\n element: object;\n width(): number;\n height(): number;\n visible: boolean;\n pictureInPicture: boolean;\n visibilityChangedAt: number | undefined;\n\n handleResize?: () => void;\n handleVisibilityChanged?: () => void;\n observe(): void;\n stopObserving(): void;\n}\n\nclass HTMLElementInfo implements ElementInfo {\n element: HTMLMediaElement;\n\n get visible(): boolean {\n return this.isPiP || this.isIntersecting;\n }\n\n get pictureInPicture(): boolean {\n return this.isPiP;\n }\n\n visibilityChangedAt: number | undefined;\n\n handleResize?: () => void;\n\n handleVisibilityChanged?: () => void;\n\n private isPiP: boolean;\n\n private isIntersecting: boolean;\n\n constructor(element: HTMLMediaElement, visible?: boolean) {\n this.element = element;\n this.isIntersecting = visible ?? isElementInViewport(element);\n this.isPiP = isWeb() && isElementInPiP(element);\n this.visibilityChangedAt = 0;\n }\n\n width(): number {\n return this.element.clientWidth;\n }\n\n height(): number {\n return this.element.clientHeight;\n }\n\n observe() {\n // make sure we update the current visible state once we start to observe\n this.isIntersecting = isElementInViewport(this.element);\n this.isPiP = isElementInPiP(this.element);\n\n (this.element as ObservableMediaElement).handleResize = () => {\n this.handleResize?.();\n };\n (this.element as ObservableMediaElement).handleVisibilityChanged = this.onVisibilityChanged;\n\n getIntersectionObserver().observe(this.element);\n getResizeObserver().observe(this.element);\n (this.element as HTMLVideoElement).addEventListener('enterpictureinpicture', this.onEnterPiP);\n (this.element as HTMLVideoElement).addEventListener('leavepictureinpicture', this.onLeavePiP);\n window.documentPictureInPicture?.addEventListener('enter', this.onEnterPiP);\n window.documentPictureInPicture?.window?.addEventListener('pagehide', this.onLeavePiP);\n }\n\n private onVisibilityChanged = (entry: IntersectionObserverEntry) => {\n const { target, isIntersecting } = entry;\n if (target === this.element) {\n this.isIntersecting = isIntersecting;\n this.isPiP = isElementInPiP(this.element);\n this.visibilityChangedAt = Date.now();\n this.handleVisibilityChanged?.();\n }\n };\n\n private onEnterPiP = () => {\n window.documentPictureInPicture?.window?.addEventListener('pagehide', this.onLeavePiP);\n this.isPiP = isElementInPiP(this.element);\n this.handleVisibilityChanged?.();\n };\n\n private onLeavePiP = () => {\n this.isPiP = isElementInPiP(this.element);\n this.handleVisibilityChanged?.();\n };\n\n stopObserving() {\n getIntersectionObserver()?.unobserve(this.element);\n getResizeObserver()?.unobserve(this.element);\n (this.element as HTMLVideoElement).removeEventListener(\n 'enterpictureinpicture',\n this.onEnterPiP,\n );\n (this.element as HTMLVideoElement).removeEventListener(\n 'leavepictureinpicture',\n this.onLeavePiP,\n );\n window.documentPictureInPicture?.removeEventListener('enter', this.onEnterPiP);\n window.documentPictureInPicture?.window?.removeEventListener('pagehide', this.onLeavePiP);\n }\n}\n\nfunction isElementInPiP(el: HTMLElement) {\n // Simple video PiP\n if (document.pictureInPictureElement === el) return true;\n // Document PiP\n if (window.documentPictureInPicture?.window)\n return isElementInViewport(el, window.documentPictureInPicture?.window);\n return false;\n}\n\n// does not account for occlusion by other elements or opacity property\nfunction isElementInViewport(el: HTMLElement, win?: Window) {\n const viewportWindow = win || window;\n let top = el.offsetTop;\n let left = el.offsetLeft;\n const width = el.offsetWidth;\n const height = el.offsetHeight;\n const { hidden } = el;\n const { display } = getComputedStyle(el);\n\n while (el.offsetParent) {\n el = el.offsetParent as HTMLElement;\n top += el.offsetTop;\n left += el.offsetLeft;\n }\n\n return (\n top < viewportWindow.pageYOffset + viewportWindow.innerHeight &&\n left < viewportWindow.pageXOffset + viewportWindow.innerWidth &&\n top + height > viewportWindow.pageYOffset &&\n left + width > viewportWindow.pageXOffset &&\n !hidden &&\n display !== 'none'\n );\n}\n","import { Encryption_Type } from '@livekit/protocol';\nimport type {\n SubscriptionError,\n TrackInfo,\n UpdateSubscription,\n UpdateTrackSettings,\n} from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\nimport log, { LoggerNames, getLogger } from '../../logger';\nimport { TrackEvent } from '../events';\nimport type { LoggerOptions, TranscriptionSegment } from '../types';\nimport LocalAudioTrack from './LocalAudioTrack';\nimport LocalVideoTrack from './LocalVideoTrack';\nimport RemoteAudioTrack from './RemoteAudioTrack';\nimport type RemoteTrack from './RemoteTrack';\nimport RemoteVideoTrack from './RemoteVideoTrack';\nimport { Track } from './Track';\nimport { getLogContextFromTrack } from './utils';\n\nexport class TrackPublication extends (EventEmitter as new () => TypedEventEmitter) {\n kind: Track.Kind;\n\n trackName: string;\n\n trackSid: Track.SID;\n\n track?: Track;\n\n source: Track.Source;\n\n /** MimeType of the published track */\n mimeType?: string;\n\n /** dimension of the original published stream, video-only */\n dimensions?: Track.Dimensions;\n\n /** true if track was simulcasted to server, video-only */\n simulcasted?: boolean;\n\n /** @internal */\n trackInfo?: TrackInfo;\n\n protected metadataMuted: boolean = false;\n\n protected encryption: Encryption_Type = Encryption_Type.NONE;\n\n protected log = log;\n\n private loggerContextCb?: LoggerOptions['loggerContextCb'];\n\n constructor(kind: Track.Kind, id: string, name: string, loggerOptions?: LoggerOptions) {\n super();\n this.log = getLogger(loggerOptions?.loggerName ?? LoggerNames.Publication);\n this.loggerContextCb = this.loggerContextCb;\n this.setMaxListeners(100);\n this.kind = kind;\n this.trackSid = id;\n this.trackName = name;\n this.source = Track.Source.Unknown;\n }\n\n /** @internal */\n setTrack(track?: Track) {\n if (this.track) {\n this.track.off(TrackEvent.Muted, this.handleMuted);\n this.track.off(TrackEvent.Unmuted, this.handleUnmuted);\n }\n\n this.track = track;\n\n if (track) {\n // forward events\n track.on(TrackEvent.Muted, this.handleMuted);\n track.on(TrackEvent.Unmuted, this.handleUnmuted);\n }\n }\n\n protected get logContext() {\n return {\n ...this.loggerContextCb?.(),\n ...getLogContextFromTrack(this),\n };\n }\n\n get isMuted(): boolean {\n return this.metadataMuted;\n }\n\n get isEnabled(): boolean {\n return true;\n }\n\n get isSubscribed(): boolean {\n return this.track !== undefined;\n }\n\n get isEncrypted(): boolean {\n return this.encryption !== Encryption_Type.NONE;\n }\n\n /**\n * an [AudioTrack] if this publication holds an audio track\n */\n get audioTrack(): LocalAudioTrack | RemoteAudioTrack | undefined {\n if (this.track instanceof LocalAudioTrack || this.track instanceof RemoteAudioTrack) {\n return this.track;\n }\n }\n\n /**\n * an [VideoTrack] if this publication holds a video track\n */\n get videoTrack(): LocalVideoTrack | RemoteVideoTrack | undefined {\n if (this.track instanceof LocalVideoTrack || this.track instanceof RemoteVideoTrack) {\n return this.track;\n }\n }\n\n handleMuted = () => {\n this.emit(TrackEvent.Muted);\n };\n\n handleUnmuted = () => {\n this.emit(TrackEvent.Unmuted);\n };\n\n /** @internal */\n updateInfo(info: TrackInfo) {\n this.trackSid = info.sid;\n this.trackName = info.name;\n this.source = Track.sourceFromProto(info.source);\n this.mimeType = info.mimeType;\n if (this.kind === Track.Kind.Video && info.width > 0) {\n this.dimensions = {\n width: info.width,\n height: info.height,\n };\n this.simulcasted = info.simulcast;\n }\n this.encryption = info.encryption;\n this.trackInfo = info;\n this.log.debug('update publication info', { ...this.logContext, info });\n }\n}\n\nexport namespace TrackPublication {\n export enum SubscriptionStatus {\n Desired = 'desired',\n Subscribed = 'subscribed',\n Unsubscribed = 'unsubscribed',\n }\n\n export enum PermissionStatus {\n Allowed = 'allowed',\n NotAllowed = 'not_allowed',\n }\n}\n\nexport type PublicationEventCallbacks = {\n muted: () => void;\n unmuted: () => void;\n ended: (track?: Track) => void;\n updateSettings: (settings: UpdateTrackSettings) => void;\n subscriptionPermissionChanged: (\n status: TrackPublication.PermissionStatus,\n prevStatus: TrackPublication.PermissionStatus,\n ) => void;\n updateSubscription: (sub: UpdateSubscription) => void;\n subscribed: (track: RemoteTrack) => void;\n unsubscribed: (track: RemoteTrack) => void;\n subscriptionStatusChanged: (\n status: TrackPublication.SubscriptionStatus,\n prevStatus: TrackPublication.SubscriptionStatus,\n ) => void;\n subscriptionFailed: (error: SubscriptionError) => void;\n transcriptionReceived: (transcription: TranscriptionSegment[]) => void;\n timeSyncUpdate: (timestamp: number) => void;\n};\n","import { AudioTrackFeature, TrackInfo } from '@livekit/protocol';\nimport { TrackEvent } from '../events';\nimport type { LoggerOptions } from '../types';\nimport LocalAudioTrack from './LocalAudioTrack';\nimport type LocalTrack from './LocalTrack';\nimport type LocalVideoTrack from './LocalVideoTrack';\nimport type { Track } from './Track';\nimport { TrackPublication } from './TrackPublication';\nimport type { TrackPublishOptions } from './options';\n\nexport default class LocalTrackPublication extends TrackPublication {\n track?: LocalTrack = undefined;\n\n options?: TrackPublishOptions;\n\n get isUpstreamPaused() {\n return this.track?.isUpstreamPaused;\n }\n\n constructor(kind: Track.Kind, ti: TrackInfo, track?: LocalTrack, loggerOptions?: LoggerOptions) {\n super(kind, ti.sid, ti.name, loggerOptions);\n\n this.updateInfo(ti);\n this.setTrack(track);\n }\n\n setTrack(track?: Track) {\n if (this.track) {\n this.track.off(TrackEvent.Ended, this.handleTrackEnded);\n }\n\n super.setTrack(track);\n\n if (track) {\n track.on(TrackEvent.Ended, this.handleTrackEnded);\n }\n }\n\n get isMuted(): boolean {\n if (this.track) {\n return this.track.isMuted;\n }\n return super.isMuted;\n }\n\n get audioTrack(): LocalAudioTrack | undefined {\n return super.audioTrack as LocalAudioTrack | undefined;\n }\n\n get videoTrack(): LocalVideoTrack | undefined {\n return super.videoTrack as LocalVideoTrack | undefined;\n }\n\n /**\n * Mute the track associated with this publication\n */\n async mute() {\n return this.track?.mute();\n }\n\n /**\n * Unmute track associated with this publication\n */\n async unmute() {\n return this.track?.unmute();\n }\n\n /**\n * Pauses the media stream track associated with this publication from being sent to the server\n * and signals \"muted\" event to other participants\n * Useful if you want to pause the stream without pausing the local media stream track\n */\n async pauseUpstream() {\n await this.track?.pauseUpstream();\n }\n\n /**\n * Resumes sending the media stream track associated with this publication to the server after a call to [[pauseUpstream()]]\n * and signals \"unmuted\" event to other participants (unless the track is explicitly muted)\n */\n async resumeUpstream() {\n await this.track?.resumeUpstream();\n }\n\n getTrackFeatures() {\n if (this.track instanceof LocalAudioTrack) {\n const settings = this.track!.getSourceTrackSettings();\n const features: Set = new Set();\n if (settings.autoGainControl) {\n features.add(AudioTrackFeature.TF_AUTO_GAIN_CONTROL);\n }\n if (settings.echoCancellation) {\n features.add(AudioTrackFeature.TF_ECHO_CANCELLATION);\n }\n if (settings.noiseSuppression) {\n features.add(AudioTrackFeature.TF_NOISE_SUPPRESSION);\n }\n if (settings.channelCount && settings.channelCount > 1) {\n features.add(AudioTrackFeature.TF_STEREO);\n }\n if (!this.options?.dtx) {\n features.add(AudioTrackFeature.TF_NO_DTX);\n }\n if (this.track.enhancedNoiseCancellation) {\n features.add(AudioTrackFeature.TF_ENHANCED_NOISE_CANCELLATION);\n }\n return Array.from(features.values());\n } else return [];\n }\n\n handleTrackEnded = () => {\n this.emit(TrackEvent.Ended);\n };\n}\n","import {\n DataPacket_Kind,\n ParticipantInfo,\n ParticipantInfo_Kind as ParticipantKind,\n ParticipantPermission,\n ConnectionQuality as ProtoQuality,\n type SipDTMF,\n SubscriptionError,\n} from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type TypedEmitter from 'typed-emitter';\nimport log, { LoggerNames, type StructuredLogger, getLogger } from '../../logger';\nimport { ParticipantEvent, TrackEvent } from '../events';\nimport LocalAudioTrack from '../track/LocalAudioTrack';\nimport type LocalTrackPublication from '../track/LocalTrackPublication';\nimport RemoteAudioTrack from '../track/RemoteAudioTrack';\nimport type RemoteTrack from '../track/RemoteTrack';\nimport type RemoteTrackPublication from '../track/RemoteTrackPublication';\nimport { Track } from '../track/Track';\nimport type { TrackPublication } from '../track/TrackPublication';\nimport { diffAttributes } from '../track/utils';\nimport type { ChatMessage, LoggerOptions, TranscriptionSegment } from '../types';\n\nexport enum ConnectionQuality {\n Excellent = 'excellent',\n Good = 'good',\n Poor = 'poor',\n /**\n * Indicates that a participant has temporarily (or permanently) lost connection to LiveKit.\n * For permanent disconnection a `ParticipantDisconnected` event will be emitted after a timeout\n */\n Lost = 'lost',\n Unknown = 'unknown',\n}\n\nfunction qualityFromProto(q: ProtoQuality): ConnectionQuality {\n switch (q) {\n case ProtoQuality.EXCELLENT:\n return ConnectionQuality.Excellent;\n case ProtoQuality.GOOD:\n return ConnectionQuality.Good;\n case ProtoQuality.POOR:\n return ConnectionQuality.Poor;\n case ProtoQuality.LOST:\n return ConnectionQuality.Lost;\n default:\n return ConnectionQuality.Unknown;\n }\n}\n\nexport { ParticipantKind };\n\nexport default class Participant extends (EventEmitter as new () => TypedEmitter) {\n protected participantInfo?: ParticipantInfo;\n\n audioTrackPublications: Map;\n\n videoTrackPublications: Map;\n\n /** map of track sid => all published tracks */\n trackPublications: Map;\n\n /** audio level between 0-1.0, 1 being loudest, 0 being softest */\n audioLevel: number = 0;\n\n /** if participant is currently speaking */\n isSpeaking: boolean = false;\n\n /** server assigned unique id */\n sid: string;\n\n /** client assigned identity, encoded in JWT token */\n identity: string;\n\n /** client assigned display name, encoded in JWT token */\n name?: string;\n\n /** client metadata, opaque to livekit */\n metadata?: string;\n\n private _attributes: Record;\n\n lastSpokeAt?: Date | undefined;\n\n permissions?: ParticipantPermission;\n\n protected _kind: ParticipantKind;\n\n private _connectionQuality: ConnectionQuality = ConnectionQuality.Unknown;\n\n protected audioContext?: AudioContext;\n\n protected log: StructuredLogger = log;\n\n protected loggerOptions?: LoggerOptions;\n\n protected get logContext() {\n return {\n ...this.loggerOptions?.loggerContextCb?.(),\n };\n }\n\n get isEncrypted() {\n return (\n this.trackPublications.size > 0 &&\n Array.from(this.trackPublications.values()).every((tr) => tr.isEncrypted)\n );\n }\n\n get isAgent() {\n return this.permissions?.agent || this.kind === ParticipantKind.AGENT;\n }\n\n get kind() {\n return this._kind;\n }\n\n /** participant attributes, similar to metadata, but as a key/value map */\n get attributes(): Readonly> {\n return Object.freeze({ ...this._attributes });\n }\n\n /** @internal */\n constructor(\n sid: string,\n identity: string,\n name?: string,\n metadata?: string,\n attributes?: Record,\n loggerOptions?: LoggerOptions,\n kind: ParticipantKind = ParticipantKind.STANDARD,\n ) {\n super();\n\n this.log = getLogger(loggerOptions?.loggerName ?? LoggerNames.Participant);\n this.loggerOptions = loggerOptions;\n\n this.setMaxListeners(100);\n this.sid = sid;\n this.identity = identity;\n this.name = name;\n this.metadata = metadata;\n this.audioTrackPublications = new Map();\n this.videoTrackPublications = new Map();\n this.trackPublications = new Map();\n this._kind = kind;\n this._attributes = attributes ?? {};\n }\n\n getTrackPublications(): TrackPublication[] {\n return Array.from(this.trackPublications.values());\n }\n\n /**\n * Finds the first track that matches the source filter, for example, getting\n * the user's camera track with getTrackBySource(Track.Source.Camera).\n */\n getTrackPublication(source: Track.Source): TrackPublication | undefined {\n for (const [, pub] of this.trackPublications) {\n if (pub.source === source) {\n return pub;\n }\n }\n }\n\n /**\n * Finds the first track that matches the track's name.\n */\n getTrackPublicationByName(name: string): TrackPublication | undefined {\n for (const [, pub] of this.trackPublications) {\n if (pub.trackName === name) {\n return pub;\n }\n }\n }\n\n get connectionQuality(): ConnectionQuality {\n return this._connectionQuality;\n }\n\n get isCameraEnabled(): boolean {\n const track = this.getTrackPublication(Track.Source.Camera);\n return !(track?.isMuted ?? true);\n }\n\n get isMicrophoneEnabled(): boolean {\n const track = this.getTrackPublication(Track.Source.Microphone);\n return !(track?.isMuted ?? true);\n }\n\n get isScreenShareEnabled(): boolean {\n const track = this.getTrackPublication(Track.Source.ScreenShare);\n return !!track;\n }\n\n get isLocal(): boolean {\n return false;\n }\n\n /** when participant joined the room */\n get joinedAt(): Date | undefined {\n if (this.participantInfo) {\n return new Date(Number.parseInt(this.participantInfo.joinedAt.toString()) * 1000);\n }\n return new Date();\n }\n\n /** @internal */\n updateInfo(info: ParticipantInfo): boolean {\n // it's possible the update could be applied out of order due to await\n // during reconnect sequences. when that happens, it's possible for server\n // to have sent more recent version of participant info while JS is waiting\n // to process the existing payload.\n // when the participant sid remains the same, and we already have a later version\n // of the payload, they can be safely skipped\n if (\n this.participantInfo &&\n this.participantInfo.sid === info.sid &&\n this.participantInfo.version > info.version\n ) {\n return false;\n }\n this.identity = info.identity;\n this.sid = info.sid;\n this._setName(info.name);\n this._setMetadata(info.metadata);\n this._setAttributes(info.attributes);\n if (info.permission) {\n this.setPermissions(info.permission);\n }\n // set this last so setMetadata can detect changes\n this.participantInfo = info;\n this.log.trace('update participant info', { ...this.logContext, info });\n return true;\n }\n\n /**\n * Updates metadata from server\n **/\n private _setMetadata(md: string) {\n const changed = this.metadata !== md;\n const prevMetadata = this.metadata;\n this.metadata = md;\n\n if (changed) {\n this.emit(ParticipantEvent.ParticipantMetadataChanged, prevMetadata);\n }\n }\n\n private _setName(name: string) {\n const changed = this.name !== name;\n this.name = name;\n\n if (changed) {\n this.emit(ParticipantEvent.ParticipantNameChanged, name);\n }\n }\n\n /**\n * Updates metadata from server\n **/\n private _setAttributes(attributes: Record) {\n const diff = diffAttributes(this.attributes, attributes);\n this._attributes = attributes;\n\n if (Object.keys(diff).length > 0) {\n this.emit(ParticipantEvent.AttributesChanged, diff);\n }\n }\n\n /** @internal */\n setPermissions(permissions: ParticipantPermission): boolean {\n const prevPermissions = this.permissions;\n const changed =\n permissions.canPublish !== this.permissions?.canPublish ||\n permissions.canSubscribe !== this.permissions?.canSubscribe ||\n permissions.canPublishData !== this.permissions?.canPublishData ||\n permissions.hidden !== this.permissions?.hidden ||\n permissions.recorder !== this.permissions?.recorder ||\n permissions.canPublishSources.length !== this.permissions.canPublishSources.length ||\n permissions.canPublishSources.some(\n (value, index) => value !== this.permissions?.canPublishSources[index],\n ) ||\n permissions.canSubscribeMetrics !== this.permissions?.canSubscribeMetrics;\n this.permissions = permissions;\n\n if (changed) {\n this.emit(ParticipantEvent.ParticipantPermissionsChanged, prevPermissions);\n }\n return changed;\n }\n\n /** @internal */\n setIsSpeaking(speaking: boolean) {\n if (speaking === this.isSpeaking) {\n return;\n }\n this.isSpeaking = speaking;\n if (speaking) {\n this.lastSpokeAt = new Date();\n }\n this.emit(ParticipantEvent.IsSpeakingChanged, speaking);\n }\n\n /** @internal */\n setConnectionQuality(q: ProtoQuality) {\n const prevQuality = this._connectionQuality;\n this._connectionQuality = qualityFromProto(q);\n if (prevQuality !== this._connectionQuality) {\n this.emit(ParticipantEvent.ConnectionQualityChanged, this._connectionQuality);\n }\n }\n\n /**\n * @internal\n */\n setAudioContext(ctx: AudioContext | undefined) {\n this.audioContext = ctx;\n this.audioTrackPublications.forEach(\n (track) =>\n (track.track instanceof RemoteAudioTrack || track.track instanceof LocalAudioTrack) &&\n track.track.setAudioContext(ctx),\n );\n }\n\n protected addTrackPublication(publication: TrackPublication) {\n // forward publication driven events\n publication.on(TrackEvent.Muted, () => {\n this.emit(ParticipantEvent.TrackMuted, publication);\n });\n\n publication.on(TrackEvent.Unmuted, () => {\n this.emit(ParticipantEvent.TrackUnmuted, publication);\n });\n\n const pub = publication;\n if (pub.track) {\n pub.track.sid = publication.trackSid;\n }\n\n this.trackPublications.set(publication.trackSid, publication);\n switch (publication.kind) {\n case Track.Kind.Audio:\n this.audioTrackPublications.set(publication.trackSid, publication);\n break;\n case Track.Kind.Video:\n this.videoTrackPublications.set(publication.trackSid, publication);\n break;\n default:\n break;\n }\n }\n}\n\nexport type ParticipantEventCallbacks = {\n trackPublished: (publication: RemoteTrackPublication) => void;\n trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication) => void;\n trackSubscriptionFailed: (trackSid: string, reason?: SubscriptionError) => void;\n trackUnpublished: (publication: RemoteTrackPublication) => void;\n trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication) => void;\n trackMuted: (publication: TrackPublication) => void;\n trackUnmuted: (publication: TrackPublication) => void;\n localTrackPublished: (publication: LocalTrackPublication) => void;\n localTrackUnpublished: (publication: LocalTrackPublication) => void;\n participantMetadataChanged: (prevMetadata: string | undefined, participant?: any) => void;\n participantNameChanged: (name: string) => void;\n dataReceived: (payload: Uint8Array, kind: DataPacket_Kind) => void;\n sipDTMFReceived: (dtmf: SipDTMF) => void;\n transcriptionReceived: (\n transcription: TranscriptionSegment[],\n publication?: TrackPublication,\n ) => void;\n isSpeakingChanged: (speaking: boolean) => void;\n connectionQualityChanged: (connectionQuality: ConnectionQuality) => void;\n trackStreamStateChanged: (\n publication: RemoteTrackPublication,\n streamState: Track.StreamState,\n ) => void;\n trackSubscriptionPermissionChanged: (\n publication: RemoteTrackPublication,\n status: TrackPublication.PermissionStatus,\n ) => void;\n mediaDevicesError: (error: Error) => void;\n audioStreamAcquired: () => void;\n participantPermissionsChanged: (prevPermissions?: ParticipantPermission) => void;\n trackSubscriptionStatusChanged: (\n publication: RemoteTrackPublication,\n status: TrackPublication.SubscriptionStatus,\n ) => void;\n attributesChanged: (changedAttributes: Record) => void;\n localTrackSubscribed: (trackPublication: LocalTrackPublication) => void;\n chatMessage: (msg: ChatMessage) => void;\n};\n","import { Mutex } from '@livekit/mutex';\nimport {\n ChatMessage as ChatMessageModel,\n ConnectionQualityUpdate,\n type DataPacket,\n DataPacket_Kind,\n DisconnectReason,\n JoinResponse,\n LeaveRequest,\n LeaveRequest_Action,\n MetricsBatch,\n ParticipantInfo,\n ParticipantInfo_State,\n ParticipantPermission,\n Room as RoomModel,\n ServerInfo,\n SimulateScenario,\n SipDTMF,\n SpeakerInfo,\n StreamStateUpdate,\n SubscriptionError,\n SubscriptionPermissionUpdate,\n SubscriptionResponse,\n TrackInfo,\n TrackSource,\n TrackType,\n Transcription as TranscriptionModel,\n TranscriptionSegment as TranscriptionSegmentModel,\n UserPacket,\n protoInt64,\n} from '@livekit/protocol';\nimport { EventEmitter } from 'events';\nimport type TypedEmitter from 'typed-emitter';\nimport 'webrtc-adapter';\nimport { EncryptionEvent } from '../e2ee';\nimport { type BaseE2EEManager, E2EEManager } from '../e2ee/E2eeManager';\nimport log, { LoggerNames, getLogger } from '../logger';\nimport type {\n InternalRoomConnectOptions,\n InternalRoomOptions,\n RoomConnectOptions,\n RoomOptions,\n} from '../options';\nimport { getBrowser } from '../utils/browserParser';\nimport DeviceManager from './DeviceManager';\nimport RTCEngine from './RTCEngine';\nimport { RegionUrlProvider } from './RegionUrlProvider';\nimport {\n audioDefaults,\n publishDefaults,\n roomConnectOptionDefaults,\n roomOptionDefaults,\n videoDefaults,\n} from './defaults';\nimport { ConnectionError, ConnectionErrorReason, UnsupportedServer } from './errors';\nimport { EngineEvent, ParticipantEvent, RoomEvent, TrackEvent } from './events';\nimport LocalParticipant from './participant/LocalParticipant';\nimport type Participant from './participant/Participant';\nimport type { ConnectionQuality } from './participant/Participant';\nimport RemoteParticipant from './participant/RemoteParticipant';\nimport CriticalTimers from './timers';\nimport LocalAudioTrack from './track/LocalAudioTrack';\nimport type LocalTrack from './track/LocalTrack';\nimport LocalTrackPublication from './track/LocalTrackPublication';\nimport LocalVideoTrack from './track/LocalVideoTrack';\nimport type RemoteTrack from './track/RemoteTrack';\nimport RemoteTrackPublication from './track/RemoteTrackPublication';\nimport { Track } from './track/Track';\nimport type { TrackPublication } from './track/TrackPublication';\nimport type { TrackProcessor } from './track/processor/types';\nimport type { AdaptiveStreamSettings } from './track/types';\nimport { getNewAudioContext, sourceToKind } from './track/utils';\nimport type {\n ChatMessage,\n SimulationOptions,\n SimulationScenario,\n TranscriptionSegment,\n} from './types';\nimport {\n Future,\n createDummyVideoStreamTrack,\n extractChatMessage,\n extractTranscriptionSegments,\n getDisconnectReasonFromConnectionError,\n getEmptyAudioStreamTrack,\n isBrowserSupported,\n isCloud,\n isReactNative,\n isSafari,\n isWeb,\n supportsSetSinkId,\n toHttpUrl,\n unpackStreamId,\n unwrapConstraint,\n} from './utils';\n\nexport enum ConnectionState {\n Disconnected = 'disconnected',\n Connecting = 'connecting',\n Connected = 'connected',\n Reconnecting = 'reconnecting',\n SignalReconnecting = 'signalReconnecting',\n}\n\nconst connectionReconcileFrequency = 4 * 1000;\n\n/**\n * In LiveKit, a room is the logical grouping for a list of participants.\n * Participants in a room can publish tracks, and subscribe to others' tracks.\n *\n * a Room fires [[RoomEvent | RoomEvents]].\n *\n * @noInheritDoc\n */\nclass Room extends (EventEmitter as new () => TypedEmitter) {\n state: ConnectionState = ConnectionState.Disconnected;\n\n /**\n * map of identity: [[RemoteParticipant]]\n */\n remoteParticipants: Map;\n\n /**\n * list of participants that are actively speaking. when this changes\n * a [[RoomEvent.ActiveSpeakersChanged]] event is fired\n */\n activeSpeakers: Participant[] = [];\n\n /** @internal */\n engine!: RTCEngine;\n\n /** the current participant */\n localParticipant: LocalParticipant;\n\n /** options of room */\n options: InternalRoomOptions;\n\n /** reflects the sender encryption status of the local participant */\n isE2EEEnabled: boolean = false;\n\n serverInfo?: Partial;\n\n private roomInfo?: RoomModel;\n\n private sidToIdentity: Map;\n\n /** connect options of room */\n private connOptions?: InternalRoomConnectOptions;\n\n private audioEnabled = true;\n\n private audioContext?: AudioContext;\n\n /** used for aborting pending connections to a LiveKit server */\n private abortController?: AbortController;\n\n /** future holding client initiated connection attempt */\n private connectFuture?: Future;\n\n private disconnectLock: Mutex;\n\n private e2eeManager: BaseE2EEManager | undefined;\n\n private connectionReconcileInterval?: ReturnType;\n\n private regionUrlProvider?: RegionUrlProvider;\n\n private regionUrl?: string;\n\n private isVideoPlaybackBlocked: boolean = false;\n\n private log = log;\n\n private bufferedEvents: Array = [];\n\n private isResuming: boolean = false;\n\n /**\n * map to store first point in time when a particular transcription segment was received\n */\n private transcriptionReceivedTimes: Map;\n\n /**\n * Creates a new Room, the primary construct for a LiveKit session.\n * @param options\n */\n constructor(options?: RoomOptions) {\n super();\n this.setMaxListeners(100);\n this.remoteParticipants = new Map();\n this.sidToIdentity = new Map();\n this.options = { ...roomOptionDefaults, ...options };\n\n this.log = getLogger(this.options.loggerName ?? LoggerNames.Room);\n this.transcriptionReceivedTimes = new Map();\n\n this.options.audioCaptureDefaults = {\n ...audioDefaults,\n ...options?.audioCaptureDefaults,\n };\n this.options.videoCaptureDefaults = {\n ...videoDefaults,\n ...options?.videoCaptureDefaults,\n };\n this.options.publishDefaults = {\n ...publishDefaults,\n ...options?.publishDefaults,\n };\n\n this.maybeCreateEngine();\n\n this.disconnectLock = new Mutex();\n\n this.localParticipant = new LocalParticipant('', '', this.engine, this.options);\n\n if (this.options.videoCaptureDefaults.deviceId) {\n this.localParticipant.activeDeviceMap.set(\n 'videoinput',\n unwrapConstraint(this.options.videoCaptureDefaults.deviceId),\n );\n }\n if (this.options.audioCaptureDefaults.deviceId) {\n this.localParticipant.activeDeviceMap.set(\n 'audioinput',\n unwrapConstraint(this.options.audioCaptureDefaults.deviceId),\n );\n }\n if (this.options.audioOutput?.deviceId) {\n this.switchActiveDevice(\n 'audiooutput',\n unwrapConstraint(this.options.audioOutput.deviceId),\n ).catch((e) => this.log.warn(`Could not set audio output: ${e.message}`, this.logContext));\n }\n\n if (this.options.e2ee) {\n this.setupE2EE();\n }\n\n if (isWeb()) {\n const abortController = new AbortController();\n\n // in order to catch device changes prior to room connection we need to register the event in the constructor\n navigator.mediaDevices?.addEventListener('devicechange', this.handleDeviceChange, {\n signal: abortController.signal,\n });\n\n if (Room.cleanupRegistry) {\n Room.cleanupRegistry.register(this, () => {\n abortController.abort();\n });\n }\n }\n }\n\n /**\n * @experimental\n */\n async setE2EEEnabled(enabled: boolean) {\n if (this.e2eeManager) {\n await Promise.all([this.localParticipant.setE2EEEnabled(enabled)]);\n if (this.localParticipant.identity !== '') {\n this.e2eeManager.setParticipantCryptorEnabled(enabled, this.localParticipant.identity);\n }\n } else {\n throw Error('e2ee not configured, please set e2ee settings within the room options');\n }\n }\n\n private setupE2EE() {\n if (this.options.e2ee) {\n if ('e2eeManager' in this.options.e2ee) {\n this.e2eeManager = this.options.e2ee.e2eeManager;\n } else {\n this.e2eeManager = new E2EEManager(this.options.e2ee);\n }\n this.e2eeManager.on(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n (enabled, participant) => {\n if (participant instanceof LocalParticipant) {\n this.isE2EEEnabled = enabled;\n }\n this.emit(RoomEvent.ParticipantEncryptionStatusChanged, enabled, participant);\n },\n );\n this.e2eeManager.on(EncryptionEvent.EncryptionError, (error) =>\n this.emit(RoomEvent.EncryptionError, error),\n );\n this.e2eeManager?.setup(this);\n }\n }\n\n private get logContext() {\n return {\n room: this.name,\n roomID: this.roomInfo?.sid,\n participant: this.localParticipant.identity,\n pID: this.localParticipant.sid,\n };\n }\n\n /**\n * if the current room has a participant with `recorder: true` in its JWT grant\n **/\n get isRecording(): boolean {\n return this.roomInfo?.activeRecording ?? false;\n }\n\n /**\n * server assigned unique room id.\n * returns once a sid has been issued by the server.\n */\n async getSid(): Promise {\n if (this.state === ConnectionState.Disconnected) {\n return '';\n }\n if (this.roomInfo && this.roomInfo.sid !== '') {\n return this.roomInfo.sid;\n }\n return new Promise((resolve, reject) => {\n const handleRoomUpdate = (roomInfo: RoomModel) => {\n if (roomInfo.sid !== '') {\n this.engine.off(EngineEvent.RoomUpdate, handleRoomUpdate);\n resolve(roomInfo.sid);\n }\n };\n this.engine.on(EngineEvent.RoomUpdate, handleRoomUpdate);\n this.once(RoomEvent.Disconnected, () => {\n this.engine.off(EngineEvent.RoomUpdate, handleRoomUpdate);\n reject('Room disconnected before room server id was available');\n });\n });\n }\n\n /** user assigned name, derived from JWT token */\n get name(): string {\n return this.roomInfo?.name ?? '';\n }\n\n /** room metadata */\n get metadata(): string | undefined {\n return this.roomInfo?.metadata;\n }\n\n get numParticipants(): number {\n return this.roomInfo?.numParticipants ?? 0;\n }\n\n get numPublishers(): number {\n return this.roomInfo?.numPublishers ?? 0;\n }\n\n private maybeCreateEngine() {\n if (this.engine && !this.engine.isClosed) {\n return;\n }\n\n this.engine = new RTCEngine(this.options);\n\n this.engine\n .on(EngineEvent.ParticipantUpdate, this.handleParticipantUpdates)\n .on(EngineEvent.RoomUpdate, this.handleRoomUpdate)\n .on(EngineEvent.SpeakersChanged, this.handleSpeakersChanged)\n .on(EngineEvent.StreamStateChanged, this.handleStreamStateUpdate)\n .on(EngineEvent.ConnectionQualityUpdate, this.handleConnectionQualityUpdate)\n .on(EngineEvent.SubscriptionError, this.handleSubscriptionError)\n .on(EngineEvent.SubscriptionPermissionUpdate, this.handleSubscriptionPermissionUpdate)\n .on(\n EngineEvent.MediaTrackAdded,\n (mediaTrack: MediaStreamTrack, stream: MediaStream, receiver: RTCRtpReceiver) => {\n this.onTrackAdded(mediaTrack, stream, receiver);\n },\n )\n .on(EngineEvent.Disconnected, (reason?: DisconnectReason) => {\n this.handleDisconnect(this.options.stopLocalTrackOnUnpublish, reason);\n })\n .on(EngineEvent.ActiveSpeakersUpdate, this.handleActiveSpeakersUpdate)\n .on(EngineEvent.DataPacketReceived, this.handleDataPacket)\n .on(EngineEvent.Resuming, () => {\n this.clearConnectionReconcile();\n this.isResuming = true;\n this.log.info('Resuming signal connection', this.logContext);\n if (this.setAndEmitConnectionState(ConnectionState.SignalReconnecting)) {\n this.emit(RoomEvent.SignalReconnecting);\n }\n })\n .on(EngineEvent.Resumed, () => {\n this.registerConnectionReconcile();\n this.isResuming = false;\n this.log.info('Resumed signal connection', this.logContext);\n this.updateSubscriptions();\n this.emitBufferedEvents();\n if (this.setAndEmitConnectionState(ConnectionState.Connected)) {\n this.emit(RoomEvent.Reconnected);\n }\n })\n .on(EngineEvent.SignalResumed, () => {\n this.bufferedEvents = [];\n if (this.state === ConnectionState.Reconnecting || this.isResuming) {\n this.sendSyncState();\n }\n })\n .on(EngineEvent.Restarting, this.handleRestarting)\n .on(EngineEvent.SignalRestarted, this.handleSignalRestarted)\n .on(EngineEvent.Offline, () => {\n if (this.setAndEmitConnectionState(ConnectionState.Reconnecting)) {\n this.emit(RoomEvent.Reconnecting);\n }\n })\n .on(EngineEvent.DCBufferStatusChanged, (status, kind) => {\n this.emit(RoomEvent.DCBufferStatusChanged, status, kind);\n })\n .on(EngineEvent.LocalTrackSubscribed, (subscribedSid) => {\n const trackPublication = this.localParticipant\n .getTrackPublications()\n .find(({ trackSid }) => trackSid === subscribedSid) as LocalTrackPublication | undefined;\n if (!trackPublication) {\n this.log.warn(\n 'could not find local track subscription for subscribed event',\n this.logContext,\n );\n return;\n }\n this.localParticipant.emit(ParticipantEvent.LocalTrackSubscribed, trackPublication);\n this.emitWhenConnected(\n RoomEvent.LocalTrackSubscribed,\n trackPublication,\n this.localParticipant,\n );\n });\n\n if (this.localParticipant) {\n this.localParticipant.setupEngine(this.engine);\n }\n if (this.e2eeManager) {\n this.e2eeManager.setupEngine(this.engine);\n }\n }\n\n /**\n * getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.\n * In particular, it requests device permissions by default if needed\n * and makes sure the returned device does not consist of dummy devices\n * @param kind\n * @returns a list of available local devices\n */\n static getLocalDevices(\n kind?: MediaDeviceKind,\n requestPermissions: boolean = true,\n ): Promise {\n return DeviceManager.getInstance().getDevices(kind, requestPermissions);\n }\n\n static cleanupRegistry =\n typeof FinalizationRegistry !== 'undefined' &&\n new FinalizationRegistry((cleanup: () => void) => {\n cleanup();\n });\n\n /**\n * prepareConnection should be called as soon as the page is loaded, in order\n * to speed up the connection attempt. This function will\n * - perform DNS resolution and pre-warm the DNS cache\n * - establish TLS connection and cache TLS keys\n *\n * With LiveKit Cloud, it will also determine the best edge data center for\n * the current client to connect to if a token is provided.\n */\n async prepareConnection(url: string, token?: string) {\n if (this.state !== ConnectionState.Disconnected) {\n return;\n }\n this.log.debug(`prepareConnection to ${url}`, this.logContext);\n try {\n if (isCloud(new URL(url)) && token) {\n this.regionUrlProvider = new RegionUrlProvider(url, token);\n const regionUrl = await this.regionUrlProvider.getNextBestRegionUrl();\n // we will not replace the regionUrl if an attempt had already started\n // to avoid overriding regionUrl after a new connection attempt had started\n if (regionUrl && this.state === ConnectionState.Disconnected) {\n this.regionUrl = regionUrl;\n await fetch(toHttpUrl(regionUrl), { method: 'HEAD' });\n this.log.debug(`prepared connection to ${regionUrl}`, this.logContext);\n }\n } else {\n await fetch(toHttpUrl(url), { method: 'HEAD' });\n }\n } catch (e) {\n this.log.warn('could not prepare connection', { ...this.logContext, error: e });\n }\n }\n\n connect = async (url: string, token: string, opts?: RoomConnectOptions): Promise => {\n if (!isBrowserSupported()) {\n if (isReactNative()) {\n throw Error(\"WebRTC isn't detected, have you called registerGlobals?\");\n } else {\n throw Error(\n \"LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.\",\n );\n }\n }\n\n // In case a disconnect called happened right before the connect call, make sure the disconnect is completed first by awaiting its lock\n const unlockDisconnect = await this.disconnectLock.lock();\n\n if (this.state === ConnectionState.Connected) {\n // when the state is reconnecting or connected, this function returns immediately\n this.log.info(`already connected to room ${this.name}`, this.logContext);\n unlockDisconnect();\n return Promise.resolve();\n }\n\n if (this.connectFuture) {\n unlockDisconnect();\n return this.connectFuture.promise;\n }\n\n this.setAndEmitConnectionState(ConnectionState.Connecting);\n if (this.regionUrlProvider?.getServerUrl().toString() !== url) {\n this.regionUrl = undefined;\n this.regionUrlProvider = undefined;\n }\n if (isCloud(new URL(url))) {\n if (this.regionUrlProvider === undefined) {\n this.regionUrlProvider = new RegionUrlProvider(url, token);\n } else {\n this.regionUrlProvider.updateToken(token);\n }\n // trigger the first fetch without waiting for a response\n // if initial connection fails, this will speed up picking regional url\n // on subsequent runs\n this.regionUrlProvider\n .fetchRegionSettings()\n .then((settings) => {\n this.regionUrlProvider?.setServerReportedRegions(settings);\n })\n .catch((e) => {\n this.log.warn('could not fetch region settings', { ...this.logContext, error: e });\n });\n }\n\n const connectFn = async (\n resolve: () => void,\n reject: (reason: any) => void,\n regionUrl?: string,\n ) => {\n if (this.abortController) {\n this.abortController.abort();\n }\n\n // explicit creation as local var needed to satisfy TS compiler when passing it to `attemptConnection` further down\n const abortController = new AbortController();\n this.abortController = abortController;\n\n // at this point the intention to connect has been signalled so we can allow cancelling of the connection via disconnect() again\n unlockDisconnect?.();\n\n try {\n await this.attemptConnection(regionUrl ?? url, token, opts, abortController);\n this.abortController = undefined;\n resolve();\n } catch (e) {\n if (\n this.regionUrlProvider &&\n e instanceof ConnectionError &&\n e.reason !== ConnectionErrorReason.Cancelled &&\n e.reason !== ConnectionErrorReason.NotAllowed\n ) {\n let nextUrl: string | null = null;\n try {\n nextUrl = await this.regionUrlProvider.getNextBestRegionUrl(\n this.abortController?.signal,\n );\n } catch (error) {\n if (\n error instanceof ConnectionError &&\n (error.status === 401 || error.reason === ConnectionErrorReason.Cancelled)\n ) {\n this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);\n reject(error);\n return;\n }\n }\n if (nextUrl && !this.abortController?.signal.aborted) {\n this.log.info(\n `Initial connection failed with ConnectionError: ${e.message}. Retrying with another region: ${nextUrl}`,\n this.logContext,\n );\n this.recreateEngine();\n await connectFn(resolve, reject, nextUrl);\n } else {\n this.handleDisconnect(\n this.options.stopLocalTrackOnUnpublish,\n getDisconnectReasonFromConnectionError(e),\n );\n reject(e);\n }\n } else {\n let disconnectReason = DisconnectReason.UNKNOWN_REASON;\n if (e instanceof ConnectionError) {\n disconnectReason = getDisconnectReasonFromConnectionError(e);\n }\n this.handleDisconnect(this.options.stopLocalTrackOnUnpublish, disconnectReason);\n reject(e);\n }\n }\n };\n\n const regionUrl = this.regionUrl;\n this.regionUrl = undefined;\n this.connectFuture = new Future(\n (resolve, reject) => {\n connectFn(resolve, reject, regionUrl);\n },\n () => {\n this.clearConnectionFutures();\n },\n );\n\n return this.connectFuture.promise;\n };\n\n private connectSignal = async (\n url: string,\n token: string,\n engine: RTCEngine,\n connectOptions: InternalRoomConnectOptions,\n roomOptions: InternalRoomOptions,\n abortController: AbortController,\n ): Promise => {\n const joinResponse = await engine.join(\n url,\n token,\n {\n autoSubscribe: connectOptions.autoSubscribe,\n adaptiveStream:\n typeof roomOptions.adaptiveStream === 'object' ? true : roomOptions.adaptiveStream,\n maxRetries: connectOptions.maxRetries,\n e2eeEnabled: !!this.e2eeManager,\n websocketTimeout: connectOptions.websocketTimeout,\n },\n abortController.signal,\n );\n\n let serverInfo: Partial | undefined = joinResponse.serverInfo;\n if (!serverInfo) {\n serverInfo = { version: joinResponse.serverVersion, region: joinResponse.serverRegion };\n }\n this.serverInfo = serverInfo;\n\n this.log.debug(\n `connected to Livekit Server ${Object.entries(serverInfo)\n .map(([key, value]) => `${key}: ${value}`)\n .join(', ')}`,\n {\n room: joinResponse.room?.name,\n roomSid: joinResponse.room?.sid,\n identity: joinResponse.participant?.identity,\n },\n );\n\n if (!serverInfo.version) {\n throw new UnsupportedServer('unknown server version');\n }\n\n if (serverInfo.version === '0.15.1' && this.options.dynacast) {\n this.log.debug('disabling dynacast due to server version', this.logContext);\n // dynacast has a bug in 0.15.1, so we cannot use it then\n roomOptions.dynacast = false;\n }\n\n return joinResponse;\n };\n\n private applyJoinResponse = (joinResponse: JoinResponse) => {\n const pi = joinResponse.participant!;\n\n this.localParticipant.sid = pi.sid;\n this.localParticipant.identity = pi.identity;\n this.localParticipant.setEnabledPublishCodecs(joinResponse.enabledPublishCodecs);\n\n if (this.options.e2ee && this.e2eeManager) {\n try {\n this.e2eeManager.setSifTrailer(joinResponse.sifTrailer);\n } catch (e: any) {\n this.log.error(e instanceof Error ? e.message : 'Could not set SifTrailer', {\n ...this.logContext,\n error: e,\n });\n }\n }\n\n // populate remote participants, these should not trigger new events\n this.handleParticipantUpdates([pi, ...joinResponse.otherParticipants]);\n\n if (joinResponse.room) {\n this.handleRoomUpdate(joinResponse.room);\n }\n };\n\n private attemptConnection = async (\n url: string,\n token: string,\n opts: RoomConnectOptions | undefined,\n abortController: AbortController,\n ) => {\n if (\n this.state === ConnectionState.Reconnecting ||\n this.isResuming ||\n this.engine?.pendingReconnect\n ) {\n this.log.info('Reconnection attempt replaced by new connection attempt', this.logContext);\n // make sure we close and recreate the existing engine in order to get rid of any potentially ongoing reconnection attempts\n this.recreateEngine();\n } else {\n // create engine if previously disconnected\n this.maybeCreateEngine();\n }\n if (this.regionUrlProvider?.isCloud()) {\n this.engine.setRegionUrlProvider(this.regionUrlProvider);\n }\n\n this.acquireAudioContext();\n\n this.connOptions = { ...roomConnectOptionDefaults, ...opts } as InternalRoomConnectOptions;\n\n if (this.connOptions.rtcConfig) {\n this.engine.rtcConfig = this.connOptions.rtcConfig;\n }\n if (this.connOptions.peerConnectionTimeout) {\n this.engine.peerConnectionTimeout = this.connOptions.peerConnectionTimeout;\n }\n\n try {\n const joinResponse = await this.connectSignal(\n url,\n token,\n this.engine,\n this.connOptions,\n this.options,\n abortController,\n );\n\n this.applyJoinResponse(joinResponse);\n // forward metadata changed for the local participant\n this.setupLocalParticipantEvents();\n this.emit(RoomEvent.SignalConnected);\n } catch (err) {\n await this.engine.close();\n this.recreateEngine();\n const resultingError = new ConnectionError(\n `could not establish signal connection`,\n ConnectionErrorReason.ServerUnreachable,\n );\n if (err instanceof Error) {\n resultingError.message = `${resultingError.message}: ${err.message}`;\n }\n if (err instanceof ConnectionError) {\n resultingError.reason = err.reason;\n resultingError.status = err.status;\n }\n this.log.debug(`error trying to establish signal connection`, {\n ...this.logContext,\n error: err,\n });\n throw resultingError;\n }\n\n if (abortController.signal.aborted) {\n await this.engine.close();\n this.recreateEngine();\n throw new ConnectionError(`Connection attempt aborted`, ConnectionErrorReason.Cancelled);\n }\n\n try {\n await this.engine.waitForPCInitialConnection(\n this.connOptions.peerConnectionTimeout,\n abortController,\n );\n } catch (e) {\n await this.engine.close();\n this.recreateEngine();\n throw e;\n }\n\n // also hook unload event\n if (isWeb() && this.options.disconnectOnPageLeave) {\n // capturing both 'pagehide' and 'beforeunload' to capture broadest set of browser behaviors\n window.addEventListener('pagehide', this.onPageLeave);\n window.addEventListener('beforeunload', this.onPageLeave);\n }\n if (isWeb()) {\n document.addEventListener('freeze', this.onPageLeave);\n }\n this.setAndEmitConnectionState(ConnectionState.Connected);\n this.emit(RoomEvent.Connected);\n this.registerConnectionReconcile();\n };\n\n /**\n * disconnects the room, emits [[RoomEvent.Disconnected]]\n */\n disconnect = async (stopTracks = true) => {\n const unlock = await this.disconnectLock.lock();\n try {\n if (this.state === ConnectionState.Disconnected) {\n this.log.debug('already disconnected', this.logContext);\n return;\n }\n this.log.info('disconnect from room', {\n ...this.logContext,\n });\n if (\n this.state === ConnectionState.Connecting ||\n this.state === ConnectionState.Reconnecting ||\n this.isResuming\n ) {\n // try aborting pending connection attempt\n this.log.warn('abort connection attempt', this.logContext);\n this.abortController?.abort();\n // in case the abort controller didn't manage to cancel the connection attempt, reject the connect promise explicitly\n this.connectFuture?.reject?.(\n new ConnectionError('Client initiated disconnect', ConnectionErrorReason.Cancelled),\n );\n this.connectFuture = undefined;\n }\n // send leave\n if (!this.engine?.client.isDisconnected) {\n await this.engine.client.sendLeave();\n }\n // close engine (also closes client)\n if (this.engine) {\n await this.engine.close();\n }\n this.handleDisconnect(stopTracks, DisconnectReason.CLIENT_INITIATED);\n /* @ts-ignore */\n this.engine = undefined;\n } finally {\n unlock();\n }\n };\n\n /**\n * retrieves a participant by identity\n * @param identity\n * @returns\n */\n getParticipantByIdentity(identity: string): Participant | undefined {\n if (this.localParticipant.identity === identity) {\n return this.localParticipant;\n }\n return this.remoteParticipants.get(identity);\n }\n\n private clearConnectionFutures() {\n this.connectFuture = undefined;\n }\n\n /**\n * @internal for testing\n */\n async simulateScenario(scenario: SimulationScenario, arg?: any) {\n let postAction = () => {};\n let req: SimulateScenario | undefined;\n switch (scenario) {\n case 'signal-reconnect':\n // @ts-expect-error function is private\n await this.engine.client.handleOnClose('simulate disconnect');\n break;\n case 'speaker':\n req = new SimulateScenario({\n scenario: {\n case: 'speakerUpdate',\n value: 3,\n },\n });\n break;\n case 'node-failure':\n req = new SimulateScenario({\n scenario: {\n case: 'nodeFailure',\n value: true,\n },\n });\n break;\n case 'server-leave':\n req = new SimulateScenario({\n scenario: {\n case: 'serverLeave',\n value: true,\n },\n });\n break;\n case 'migration':\n req = new SimulateScenario({\n scenario: {\n case: 'migration',\n value: true,\n },\n });\n break;\n case 'resume-reconnect':\n this.engine.failNext();\n // @ts-expect-error function is private\n await this.engine.client.handleOnClose('simulate resume-disconnect');\n break;\n case 'disconnect-signal-on-resume':\n postAction = async () => {\n // @ts-expect-error function is private\n await this.engine.client.handleOnClose('simulate resume-disconnect');\n };\n req = new SimulateScenario({\n scenario: {\n case: 'disconnectSignalOnResume',\n value: true,\n },\n });\n break;\n case 'disconnect-signal-on-resume-no-messages':\n postAction = async () => {\n // @ts-expect-error function is private\n await this.engine.client.handleOnClose('simulate resume-disconnect');\n };\n req = new SimulateScenario({\n scenario: {\n case: 'disconnectSignalOnResumeNoMessages',\n value: true,\n },\n });\n break;\n case 'full-reconnect':\n this.engine.fullReconnectOnNext = true;\n // @ts-expect-error function is private\n await this.engine.client.handleOnClose('simulate full-reconnect');\n break;\n case 'force-tcp':\n case 'force-tls':\n req = new SimulateScenario({\n scenario: {\n case: 'switchCandidateProtocol',\n value: scenario === 'force-tls' ? 2 : 1,\n },\n });\n postAction = async () => {\n const onLeave = this.engine.client.onLeave;\n if (onLeave) {\n onLeave(\n new LeaveRequest({\n reason: DisconnectReason.CLIENT_INITIATED,\n action: LeaveRequest_Action.RECONNECT,\n }),\n );\n }\n };\n break;\n case 'subscriber-bandwidth':\n if (arg === undefined || typeof arg !== 'number') {\n throw new Error('subscriber-bandwidth requires a number as argument');\n }\n req = new SimulateScenario({\n scenario: {\n case: 'subscriberBandwidth',\n value: BigInt(arg),\n },\n });\n break;\n case 'leave-full-reconnect':\n req = new SimulateScenario({\n scenario: {\n case: 'leaveRequestFullReconnect',\n value: true,\n },\n });\n default:\n }\n if (req) {\n await this.engine.client.sendSimulateScenario(req);\n await postAction();\n }\n }\n\n private onPageLeave = async () => {\n this.log.info('Page leave detected, disconnecting', this.logContext);\n await this.disconnect();\n };\n\n /**\n * Browsers have different policies regarding audio playback. Most requiring\n * some form of user interaction (click/tap/etc).\n * In those cases, audio will be silent until a click/tap triggering one of the following\n * - `startAudio`\n * - `getUserMedia`\n */\n startAudio = async () => {\n const elements: Array = [];\n const browser = getBrowser();\n if (browser && browser.os === 'iOS') {\n /**\n * iOS blocks audio element playback if\n * - user is not publishing audio themselves and\n * - no other audio source is playing\n *\n * as a workaround, we create an audio element with an empty track, so that\n * silent audio is always playing\n */\n const audioId = 'livekit-dummy-audio-el';\n let dummyAudioEl = document.getElementById(audioId) as HTMLAudioElement | null;\n if (!dummyAudioEl) {\n dummyAudioEl = document.createElement('audio');\n dummyAudioEl.id = audioId;\n dummyAudioEl.autoplay = true;\n dummyAudioEl.hidden = true;\n const track = getEmptyAudioStreamTrack();\n track.enabled = true;\n const stream = new MediaStream([track]);\n dummyAudioEl.srcObject = stream;\n document.addEventListener('visibilitychange', () => {\n if (!dummyAudioEl) {\n return;\n }\n // set the srcObject to null on page hide in order to prevent lock screen controls to show up for it\n dummyAudioEl.srcObject = document.hidden ? null : stream;\n if (!document.hidden) {\n this.log.debug(\n 'page visible again, triggering startAudio to resume playback and update playback status',\n this.logContext,\n );\n this.startAudio();\n }\n });\n document.body.append(dummyAudioEl);\n this.once(RoomEvent.Disconnected, () => {\n dummyAudioEl?.remove();\n dummyAudioEl = null;\n });\n }\n elements.push(dummyAudioEl);\n }\n\n this.remoteParticipants.forEach((p) => {\n p.audioTrackPublications.forEach((t) => {\n if (t.track) {\n t.track.attachedElements.forEach((e) => {\n elements.push(e);\n });\n }\n });\n });\n\n try {\n await Promise.all([\n this.acquireAudioContext(),\n ...elements.map((e) => {\n e.muted = false;\n return e.play();\n }),\n ]);\n this.handleAudioPlaybackStarted();\n } catch (err) {\n this.handleAudioPlaybackFailed(err);\n throw err;\n }\n };\n\n startVideo = async () => {\n const elements: HTMLMediaElement[] = [];\n for (const p of this.remoteParticipants.values()) {\n p.videoTrackPublications.forEach((tr) => {\n tr.track?.attachedElements.forEach((el) => {\n if (!elements.includes(el)) {\n elements.push(el);\n }\n });\n });\n }\n await Promise.all(elements.map((el) => el.play()))\n .then(() => {\n this.handleVideoPlaybackStarted();\n })\n .catch((e) => {\n if (e.name === 'NotAllowedError') {\n this.handleVideoPlaybackFailed();\n } else {\n this.log.warn(\n 'Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler',\n this.logContext,\n );\n }\n });\n };\n\n /**\n * Returns true if audio playback is enabled\n */\n get canPlaybackAudio(): boolean {\n return this.audioEnabled;\n }\n\n /**\n * Returns true if video playback is enabled\n */\n get canPlaybackVideo(): boolean {\n return !this.isVideoPlaybackBlocked;\n }\n\n getActiveDevice(kind: MediaDeviceKind): string | undefined {\n return this.localParticipant.activeDeviceMap.get(kind);\n }\n\n /**\n * Switches all active devices used in this room to the given device.\n *\n * Note: setting AudioOutput is not supported on some browsers. See [setSinkId](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId#browser_compatibility)\n *\n * @param kind use `videoinput` for camera track,\n * `audioinput` for microphone track,\n * `audiooutput` to set speaker for all incoming audio tracks\n * @param deviceId\n */\n async switchActiveDevice(kind: MediaDeviceKind, deviceId: string, exact: boolean = false) {\n let success = true;\n let needsUpdateWithoutTracks = false;\n const deviceConstraint = exact ? { exact: deviceId } : deviceId;\n if (kind === 'audioinput') {\n needsUpdateWithoutTracks = this.localParticipant.audioTrackPublications.size === 0;\n const prevDeviceId =\n this.getActiveDevice(kind) ?? this.options.audioCaptureDefaults!.deviceId;\n this.options.audioCaptureDefaults!.deviceId = deviceConstraint;\n const tracks = Array.from(this.localParticipant.audioTrackPublications.values()).filter(\n (track) => track.source === Track.Source.Microphone,\n );\n try {\n success = (\n await Promise.all(tracks.map((t) => t.audioTrack?.setDeviceId(deviceConstraint)))\n ).every((val) => val === true);\n } catch (e) {\n this.options.audioCaptureDefaults!.deviceId = prevDeviceId;\n throw e;\n }\n } else if (kind === 'videoinput') {\n needsUpdateWithoutTracks = this.localParticipant.videoTrackPublications.size === 0;\n const prevDeviceId =\n this.getActiveDevice(kind) ?? this.options.videoCaptureDefaults!.deviceId;\n this.options.videoCaptureDefaults!.deviceId = deviceConstraint;\n const tracks = Array.from(this.localParticipant.videoTrackPublications.values()).filter(\n (track) => track.source === Track.Source.Camera,\n );\n try {\n success = (\n await Promise.all(tracks.map((t) => t.videoTrack?.setDeviceId(deviceConstraint)))\n ).every((val) => val === true);\n } catch (e) {\n this.options.videoCaptureDefaults!.deviceId = prevDeviceId;\n throw e;\n }\n } else if (kind === 'audiooutput') {\n if (\n (!supportsSetSinkId() && !this.options.webAudioMix) ||\n (this.options.webAudioMix && this.audioContext && !('setSinkId' in this.audioContext))\n ) {\n throw new Error('cannot switch audio output, setSinkId not supported');\n }\n if (this.options.webAudioMix) {\n // setting `default` for web audio output doesn't work, so we need to normalize the id before\n deviceId =\n (await DeviceManager.getInstance().normalizeDeviceId('audiooutput', deviceId)) ?? '';\n }\n this.options.audioOutput ??= {};\n const prevDeviceId = this.getActiveDevice(kind) ?? this.options.audioOutput.deviceId;\n this.options.audioOutput.deviceId = deviceId;\n\n try {\n if (this.options.webAudioMix) {\n // @ts-expect-error setSinkId is not yet in the typescript type of AudioContext\n this.audioContext?.setSinkId(deviceId);\n }\n // also set audio output on all audio elements, even if webAudioMix is enabled in order to workaround echo cancellation not working on chrome with non-default output devices\n // see https://issues.chromium.org/issues/40252911#comment7\n await Promise.all(\n Array.from(this.remoteParticipants.values()).map((p) => p.setAudioOutput({ deviceId })),\n );\n } catch (e) {\n this.options.audioOutput.deviceId = prevDeviceId;\n throw e;\n }\n }\n if (needsUpdateWithoutTracks || kind === 'audiooutput') {\n // if there are not active tracks yet or we're switching audiooutput, we need to manually update the active device map here as changing audio output won't result in a track restart\n this.localParticipant.activeDeviceMap.set(\n kind,\n (kind === 'audiooutput' && this.options.audioOutput?.deviceId) || deviceId,\n );\n this.emit(RoomEvent.ActiveDeviceChanged, kind, deviceId);\n }\n\n return success;\n }\n\n private setupLocalParticipantEvents() {\n this.localParticipant\n .on(ParticipantEvent.ParticipantMetadataChanged, this.onLocalParticipantMetadataChanged)\n .on(ParticipantEvent.ParticipantNameChanged, this.onLocalParticipantNameChanged)\n .on(ParticipantEvent.AttributesChanged, this.onLocalAttributesChanged)\n .on(ParticipantEvent.TrackMuted, this.onLocalTrackMuted)\n .on(ParticipantEvent.TrackUnmuted, this.onLocalTrackUnmuted)\n .on(ParticipantEvent.LocalTrackPublished, this.onLocalTrackPublished)\n .on(ParticipantEvent.LocalTrackUnpublished, this.onLocalTrackUnpublished)\n .on(ParticipantEvent.ConnectionQualityChanged, this.onLocalConnectionQualityChanged)\n .on(ParticipantEvent.MediaDevicesError, this.onMediaDevicesError)\n .on(ParticipantEvent.AudioStreamAcquired, this.startAudio)\n .on(ParticipantEvent.ChatMessage, this.onLocalChatMessageSent)\n .on(\n ParticipantEvent.ParticipantPermissionsChanged,\n this.onLocalParticipantPermissionsChanged,\n );\n }\n\n private recreateEngine() {\n this.engine?.close();\n /* @ts-ignore */\n this.engine = undefined;\n this.isResuming = false;\n\n // clear out existing remote participants, since they may have attached\n // the old engine\n this.remoteParticipants.clear();\n this.sidToIdentity.clear();\n this.bufferedEvents = [];\n this.maybeCreateEngine();\n }\n\n private onTrackAdded(\n mediaTrack: MediaStreamTrack,\n stream: MediaStream,\n receiver: RTCRtpReceiver,\n ) {\n // don't fire onSubscribed when connecting\n // WebRTC fires onTrack as soon as setRemoteDescription is called on the offer\n // at that time, ICE connectivity has not been established so the track is not\n // technically subscribed.\n // We'll defer these events until when the room is connected or eventually disconnected.\n if (this.state === ConnectionState.Connecting || this.state === ConnectionState.Reconnecting) {\n const reconnectedHandler = () => {\n this.onTrackAdded(mediaTrack, stream, receiver);\n cleanup();\n };\n const cleanup = () => {\n this.off(RoomEvent.Reconnected, reconnectedHandler);\n this.off(RoomEvent.Connected, reconnectedHandler);\n this.off(RoomEvent.Disconnected, cleanup);\n };\n this.once(RoomEvent.Reconnected, reconnectedHandler);\n this.once(RoomEvent.Connected, reconnectedHandler);\n this.once(RoomEvent.Disconnected, cleanup);\n return;\n }\n if (this.state === ConnectionState.Disconnected) {\n this.log.warn('skipping incoming track after Room disconnected', this.logContext);\n return;\n }\n const parts = unpackStreamId(stream.id);\n const participantSid = parts[0];\n let streamId = parts[1];\n let trackId = mediaTrack.id;\n // firefox will get streamId (pID|trackId) instead of (pID|streamId) as it doesn't support sync tracks by stream\n // and generates its own track id instead of infer from sdp track id.\n if (streamId && streamId.startsWith('TR')) trackId = streamId;\n\n if (participantSid === this.localParticipant.sid) {\n this.log.warn('tried to create RemoteParticipant for local participant', this.logContext);\n return;\n }\n\n const participant = Array.from(this.remoteParticipants.values()).find(\n (p) => p.sid === participantSid,\n ) as RemoteParticipant | undefined;\n\n if (!participant) {\n this.log.error(\n `Tried to add a track for a participant, that's not present. Sid: ${participantSid}`,\n this.logContext,\n );\n return;\n }\n\n let adaptiveStreamSettings: AdaptiveStreamSettings | undefined;\n if (this.options.adaptiveStream) {\n if (typeof this.options.adaptiveStream === 'object') {\n adaptiveStreamSettings = this.options.adaptiveStream;\n } else {\n adaptiveStreamSettings = {};\n }\n }\n participant.addSubscribedMediaTrack(\n mediaTrack,\n trackId,\n stream,\n receiver,\n adaptiveStreamSettings,\n );\n }\n\n private handleRestarting = () => {\n this.clearConnectionReconcile();\n // in case we went from resuming to full-reconnect, make sure to reflect it on the isResuming flag\n this.isResuming = false;\n\n // also unwind existing participants & existing subscriptions\n for (const p of this.remoteParticipants.values()) {\n this.handleParticipantDisconnected(p.identity, p);\n }\n\n if (this.setAndEmitConnectionState(ConnectionState.Reconnecting)) {\n this.emit(RoomEvent.Reconnecting);\n }\n };\n\n private handleSignalRestarted = async (joinResponse: JoinResponse) => {\n this.log.debug(`signal reconnected to server, region ${joinResponse.serverRegion}`, {\n ...this.logContext,\n region: joinResponse.serverRegion,\n });\n this.bufferedEvents = [];\n\n this.applyJoinResponse(joinResponse);\n\n try {\n // unpublish & republish tracks\n await this.localParticipant.republishAllTracks(undefined, true);\n } catch (error) {\n this.log.error('error trying to re-publish tracks after reconnection', {\n ...this.logContext,\n error,\n });\n }\n\n try {\n await this.engine.waitForRestarted();\n this.log.debug(`fully reconnected to server`, {\n ...this.logContext,\n region: joinResponse.serverRegion,\n });\n } catch {\n // reconnection failed, handleDisconnect is being invoked already, just return here\n return;\n }\n this.setAndEmitConnectionState(ConnectionState.Connected);\n this.emit(RoomEvent.Reconnected);\n this.registerConnectionReconcile();\n this.emitBufferedEvents();\n };\n\n private handleDisconnect(shouldStopTracks = true, reason?: DisconnectReason) {\n this.clearConnectionReconcile();\n this.isResuming = false;\n this.bufferedEvents = [];\n this.transcriptionReceivedTimes.clear();\n if (this.state === ConnectionState.Disconnected) {\n return;\n }\n\n this.regionUrl = undefined;\n\n try {\n this.remoteParticipants.forEach((p) => {\n p.trackPublications.forEach((pub) => {\n p.unpublishTrack(pub.trackSid);\n });\n });\n\n this.localParticipant.trackPublications.forEach((pub) => {\n if (pub.track) {\n this.localParticipant.unpublishTrack(pub.track, shouldStopTracks);\n }\n if (shouldStopTracks) {\n pub.track?.detach();\n pub.track?.stop();\n } else {\n pub.track?.stopMonitor();\n }\n });\n\n this.localParticipant\n .off(ParticipantEvent.ParticipantMetadataChanged, this.onLocalParticipantMetadataChanged)\n .off(ParticipantEvent.ParticipantNameChanged, this.onLocalParticipantNameChanged)\n .off(ParticipantEvent.AttributesChanged, this.onLocalAttributesChanged)\n .off(ParticipantEvent.TrackMuted, this.onLocalTrackMuted)\n .off(ParticipantEvent.TrackUnmuted, this.onLocalTrackUnmuted)\n .off(ParticipantEvent.LocalTrackPublished, this.onLocalTrackPublished)\n .off(ParticipantEvent.LocalTrackUnpublished, this.onLocalTrackUnpublished)\n .off(ParticipantEvent.ConnectionQualityChanged, this.onLocalConnectionQualityChanged)\n .off(ParticipantEvent.MediaDevicesError, this.onMediaDevicesError)\n .off(ParticipantEvent.AudioStreamAcquired, this.startAudio)\n .off(ParticipantEvent.ChatMessage, this.onLocalChatMessageSent)\n .off(\n ParticipantEvent.ParticipantPermissionsChanged,\n this.onLocalParticipantPermissionsChanged,\n );\n\n this.localParticipant.trackPublications.clear();\n this.localParticipant.videoTrackPublications.clear();\n this.localParticipant.audioTrackPublications.clear();\n\n this.remoteParticipants.clear();\n this.sidToIdentity.clear();\n this.activeSpeakers = [];\n if (this.audioContext && typeof this.options.webAudioMix === 'boolean') {\n this.audioContext.close();\n this.audioContext = undefined;\n }\n if (isWeb()) {\n window.removeEventListener('beforeunload', this.onPageLeave);\n window.removeEventListener('pagehide', this.onPageLeave);\n window.removeEventListener('freeze', this.onPageLeave);\n navigator.mediaDevices?.removeEventListener('devicechange', this.handleDeviceChange);\n }\n } finally {\n this.setAndEmitConnectionState(ConnectionState.Disconnected);\n this.emit(RoomEvent.Disconnected, reason);\n }\n }\n\n private handleParticipantUpdates = (participantInfos: ParticipantInfo[]) => {\n // handle changes to participant state, and send events\n participantInfos.forEach((info) => {\n if (info.identity === this.localParticipant.identity) {\n this.localParticipant.updateInfo(info);\n return;\n }\n\n // LiveKit server doesn't send identity info prior to version 1.5.2 in disconnect updates\n // so we try to map an empty identity to an already known sID manually\n if (info.identity === '') {\n info.identity = this.sidToIdentity.get(info.sid) ?? '';\n }\n\n let remoteParticipant = this.remoteParticipants.get(info.identity);\n\n // when it's disconnected, send updates\n if (info.state === ParticipantInfo_State.DISCONNECTED) {\n this.handleParticipantDisconnected(info.identity, remoteParticipant);\n } else {\n // create participant if doesn't exist\n remoteParticipant = this.getOrCreateParticipant(info.identity, info);\n }\n });\n };\n\n private handleParticipantDisconnected(identity: string, participant?: RemoteParticipant) {\n // remove and send event\n this.remoteParticipants.delete(identity);\n if (!participant) {\n return;\n }\n\n participant.trackPublications.forEach((publication) => {\n participant.unpublishTrack(publication.trackSid, true);\n });\n this.emit(RoomEvent.ParticipantDisconnected, participant);\n this.localParticipant?.handleParticipantDisconnected(participant.identity);\n }\n\n // updates are sent only when there's a change to speaker ordering\n private handleActiveSpeakersUpdate = (speakers: SpeakerInfo[]) => {\n const activeSpeakers: Participant[] = [];\n const seenSids: any = {};\n speakers.forEach((speaker) => {\n seenSids[speaker.sid] = true;\n if (speaker.sid === this.localParticipant.sid) {\n this.localParticipant.audioLevel = speaker.level;\n this.localParticipant.setIsSpeaking(true);\n activeSpeakers.push(this.localParticipant);\n } else {\n const p = this.getRemoteParticipantBySid(speaker.sid);\n if (p) {\n p.audioLevel = speaker.level;\n p.setIsSpeaking(true);\n activeSpeakers.push(p);\n }\n }\n });\n\n if (!seenSids[this.localParticipant.sid]) {\n this.localParticipant.audioLevel = 0;\n this.localParticipant.setIsSpeaking(false);\n }\n this.remoteParticipants.forEach((p) => {\n if (!seenSids[p.sid]) {\n p.audioLevel = 0;\n p.setIsSpeaking(false);\n }\n });\n\n this.activeSpeakers = activeSpeakers;\n this.emitWhenConnected(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n };\n\n // process list of changed speakers\n private handleSpeakersChanged = (speakerUpdates: SpeakerInfo[]) => {\n const lastSpeakers = new Map();\n this.activeSpeakers.forEach((p) => {\n const remoteParticipant = this.remoteParticipants.get(p.identity);\n if (remoteParticipant && remoteParticipant.sid !== p.sid) {\n return;\n }\n lastSpeakers.set(p.sid, p);\n });\n speakerUpdates.forEach((speaker) => {\n let p: Participant | undefined = this.getRemoteParticipantBySid(speaker.sid);\n if (speaker.sid === this.localParticipant.sid) {\n p = this.localParticipant;\n }\n if (!p) {\n return;\n }\n p.audioLevel = speaker.level;\n p.setIsSpeaking(speaker.active);\n\n if (speaker.active) {\n lastSpeakers.set(speaker.sid, p);\n } else {\n lastSpeakers.delete(speaker.sid);\n }\n });\n const activeSpeakers = Array.from(lastSpeakers.values());\n activeSpeakers.sort((a, b) => b.audioLevel - a.audioLevel);\n this.activeSpeakers = activeSpeakers;\n this.emitWhenConnected(RoomEvent.ActiveSpeakersChanged, activeSpeakers);\n };\n\n private handleStreamStateUpdate = (streamStateUpdate: StreamStateUpdate) => {\n streamStateUpdate.streamStates.forEach((streamState) => {\n const participant = this.getRemoteParticipantBySid(streamState.participantSid);\n if (!participant) {\n return;\n }\n const pub = participant.getTrackPublicationBySid(streamState.trackSid);\n if (!pub || !pub.track) {\n return;\n }\n const newStreamState = Track.streamStateFromProto(streamState.state);\n if (newStreamState !== pub.track.streamState) {\n pub.track.streamState = newStreamState;\n participant.emit(ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState);\n this.emitWhenConnected(\n RoomEvent.TrackStreamStateChanged,\n pub,\n pub.track.streamState,\n participant,\n );\n }\n });\n };\n\n private handleSubscriptionPermissionUpdate = (update: SubscriptionPermissionUpdate) => {\n const participant = this.getRemoteParticipantBySid(update.participantSid);\n if (!participant) {\n return;\n }\n const pub = participant.getTrackPublicationBySid(update.trackSid);\n if (!pub) {\n return;\n }\n\n pub.setAllowed(update.allowed);\n };\n\n private handleSubscriptionError = (update: SubscriptionResponse) => {\n const participant = Array.from(this.remoteParticipants.values()).find((p) =>\n p.trackPublications.has(update.trackSid),\n );\n if (!participant) {\n return;\n }\n const pub = participant.getTrackPublicationBySid(update.trackSid);\n if (!pub) {\n return;\n }\n\n pub.setSubscriptionError(update.err);\n };\n\n private handleDataPacket = (packet: DataPacket) => {\n // find the participant\n const participant = this.remoteParticipants.get(packet.participantIdentity);\n if (packet.value.case === 'user') {\n this.handleUserPacket(participant, packet.value.value, packet.kind);\n } else if (packet.value.case === 'transcription') {\n this.handleTranscription(participant, packet.value.value);\n } else if (packet.value.case === 'sipDtmf') {\n this.handleSipDtmf(participant, packet.value.value);\n } else if (packet.value.case === 'chatMessage') {\n this.handleChatMessage(participant, packet.value.value);\n } else if (packet.value.case === 'metrics') {\n this.handleMetrics(packet.value.value, participant);\n }\n };\n\n private handleUserPacket = (\n participant: RemoteParticipant | undefined,\n userPacket: UserPacket,\n kind: DataPacket_Kind,\n ) => {\n this.emit(RoomEvent.DataReceived, userPacket.payload, participant, kind, userPacket.topic);\n\n // also emit on the participant\n participant?.emit(ParticipantEvent.DataReceived, userPacket.payload, kind);\n };\n\n private handleSipDtmf = (participant: RemoteParticipant | undefined, dtmf: SipDTMF) => {\n this.emit(RoomEvent.SipDTMFReceived, dtmf, participant);\n\n // also emit on the participant\n participant?.emit(ParticipantEvent.SipDTMFReceived, dtmf);\n };\n\n bufferedSegments: Map = new Map();\n\n private handleTranscription = (\n _remoteParticipant: RemoteParticipant | undefined,\n transcription: TranscriptionModel,\n ) => {\n // find the participant\n const participant =\n transcription.transcribedParticipantIdentity === this.localParticipant.identity\n ? this.localParticipant\n : this.getParticipantByIdentity(transcription.transcribedParticipantIdentity);\n const publication = participant?.trackPublications.get(transcription.trackId);\n\n const segments = extractTranscriptionSegments(transcription, this.transcriptionReceivedTimes);\n\n publication?.emit(TrackEvent.TranscriptionReceived, segments);\n participant?.emit(ParticipantEvent.TranscriptionReceived, segments, publication);\n this.emit(RoomEvent.TranscriptionReceived, segments, participant, publication);\n };\n\n private handleChatMessage = (\n participant: RemoteParticipant | undefined,\n chatMessage: ChatMessageModel,\n ) => {\n const msg = extractChatMessage(chatMessage);\n this.emit(RoomEvent.ChatMessage, msg, participant);\n };\n\n private handleMetrics = (metrics: MetricsBatch, participant?: Participant) => {\n this.emit(RoomEvent.MetricsReceived, metrics, participant);\n };\n\n private handleAudioPlaybackStarted = () => {\n if (this.canPlaybackAudio) {\n return;\n }\n this.audioEnabled = true;\n this.emit(RoomEvent.AudioPlaybackStatusChanged, true);\n };\n\n private handleAudioPlaybackFailed = (e: any) => {\n this.log.warn('could not playback audio', { ...this.logContext, error: e });\n if (!this.canPlaybackAudio) {\n return;\n }\n this.audioEnabled = false;\n this.emit(RoomEvent.AudioPlaybackStatusChanged, false);\n };\n\n private handleVideoPlaybackStarted = () => {\n if (this.isVideoPlaybackBlocked) {\n this.isVideoPlaybackBlocked = false;\n this.emit(RoomEvent.VideoPlaybackStatusChanged, true);\n }\n };\n\n private handleVideoPlaybackFailed = () => {\n if (!this.isVideoPlaybackBlocked) {\n this.isVideoPlaybackBlocked = true;\n this.emit(RoomEvent.VideoPlaybackStatusChanged, false);\n }\n };\n\n private handleDeviceChange = async () => {\n const previousDevices = DeviceManager.getInstance().previousDevices;\n // check for available devices, but don't request permissions in order to avoid prompts for kinds that haven't been used before\n const availableDevices = await DeviceManager.getInstance().getDevices(undefined, false);\n const browser = getBrowser();\n if (browser?.name === 'Chrome' && browser.os !== 'iOS') {\n for (let availableDevice of availableDevices) {\n const previousDevice = previousDevices.find(\n (info) => info.deviceId === availableDevice.deviceId,\n );\n if (\n previousDevice &&\n previousDevice.label !== '' &&\n previousDevice.kind === availableDevice.kind &&\n previousDevice.label !== availableDevice.label\n ) {\n // label has changed on device the same deviceId, indicating that the default device has changed on the OS level\n if (this.getActiveDevice(availableDevice.kind) === 'default') {\n // emit an active device change event only if the selected output device is actually on `default`\n this.emit(\n RoomEvent.ActiveDeviceChanged,\n availableDevice.kind,\n availableDevice.deviceId,\n );\n }\n }\n }\n }\n\n // inputs are automatically handled via TrackEvent.Ended causing a TrackEvent.Restarted. Here we only need to worry about audiooutputs changing\n const kinds: MediaDeviceKind[] = ['audiooutput', 'audioinput', 'videoinput'];\n for (let kind of kinds) {\n const devicesOfKind = availableDevices.filter((d) => d.kind === kind);\n const activeDevice = this.getActiveDevice(kind);\n\n if (activeDevice === previousDevices.filter((info) => info.kind === kind)[0]?.deviceId) {\n // in Safari the first device is always the default, so we assume a user on the default device would like to switch to the default once it changes\n // FF doesn't emit an event when the default device changes, so we perform the same best effort and switch to the new device once connected and if it's the first in the array\n if (devicesOfKind.length > 0 && devicesOfKind[0]?.deviceId !== activeDevice) {\n await this.switchActiveDevice(kind, devicesOfKind[0].deviceId);\n continue;\n }\n }\n\n if ((kind === 'audioinput' && !isSafari()) || kind === 'videoinput') {\n // airpods on Safari need special handling for audioinput as the track doesn't end as soon as you take them out\n continue;\n }\n // switch to first available device if previously active device is not available any more\n if (\n devicesOfKind.length > 0 &&\n !devicesOfKind.find((deviceInfo) => deviceInfo.deviceId === this.getActiveDevice(kind))\n ) {\n await this.switchActiveDevice(kind, devicesOfKind[0].deviceId);\n }\n }\n\n this.emit(RoomEvent.MediaDevicesChanged);\n };\n\n private handleRoomUpdate = (room: RoomModel) => {\n const oldRoom = this.roomInfo;\n this.roomInfo = room;\n if (oldRoom && oldRoom.metadata !== room.metadata) {\n this.emitWhenConnected(RoomEvent.RoomMetadataChanged, room.metadata);\n }\n if (oldRoom?.activeRecording !== room.activeRecording) {\n this.emitWhenConnected(RoomEvent.RecordingStatusChanged, room.activeRecording);\n }\n };\n\n private handleConnectionQualityUpdate = (update: ConnectionQualityUpdate) => {\n update.updates.forEach((info) => {\n if (info.participantSid === this.localParticipant.sid) {\n this.localParticipant.setConnectionQuality(info.quality);\n return;\n }\n const participant = this.getRemoteParticipantBySid(info.participantSid);\n if (participant) {\n participant.setConnectionQuality(info.quality);\n }\n });\n };\n\n private async acquireAudioContext() {\n if (typeof this.options.webAudioMix !== 'boolean' && this.options.webAudioMix.audioContext) {\n // override audio context with custom audio context if supplied by user\n this.audioContext = this.options.webAudioMix.audioContext;\n } else if (!this.audioContext || this.audioContext.state === 'closed') {\n // by using an AudioContext, it reduces lag on audio elements\n // https://stackoverflow.com/questions/9811429/html5-audio-tag-on-safari-has-a-delay/54119854#54119854\n this.audioContext = getNewAudioContext() ?? undefined;\n }\n\n if (this.audioContext && this.audioContext.state === 'suspended') {\n // for iOS a newly created AudioContext is always in `suspended` state.\n // we try our best to resume the context here, if that doesn't work, we just continue with regular processing\n try {\n await this.audioContext.resume();\n } catch (e: any) {\n this.log.warn('Could not resume audio context', { ...this.logContext, error: e });\n }\n }\n\n if (this.options.webAudioMix) {\n this.remoteParticipants.forEach((participant) =>\n participant.setAudioContext(this.audioContext),\n );\n }\n\n this.localParticipant.setAudioContext(this.audioContext);\n\n const newContextIsRunning = this.audioContext?.state === 'running';\n if (newContextIsRunning !== this.canPlaybackAudio) {\n this.audioEnabled = newContextIsRunning;\n this.emit(RoomEvent.AudioPlaybackStatusChanged, newContextIsRunning);\n }\n }\n\n private createParticipant(identity: string, info?: ParticipantInfo): RemoteParticipant {\n let participant: RemoteParticipant;\n if (info) {\n participant = RemoteParticipant.fromParticipantInfo(this.engine.client, info, {\n loggerContextCb: () => this.logContext,\n loggerName: this.options.loggerName,\n });\n } else {\n participant = new RemoteParticipant(\n this.engine.client,\n '',\n identity,\n undefined,\n undefined,\n undefined,\n {\n loggerContextCb: () => this.logContext,\n loggerName: this.options.loggerName,\n },\n );\n }\n if (this.options.webAudioMix) {\n participant.setAudioContext(this.audioContext);\n }\n if (this.options.audioOutput?.deviceId) {\n participant\n .setAudioOutput(this.options.audioOutput)\n .catch((e) => this.log.warn(`Could not set audio output: ${e.message}`, this.logContext));\n }\n return participant;\n }\n\n private getOrCreateParticipant(identity: string, info: ParticipantInfo): RemoteParticipant {\n if (this.remoteParticipants.has(identity)) {\n const existingParticipant = this.remoteParticipants.get(identity)!;\n if (info) {\n const wasUpdated = existingParticipant.updateInfo(info);\n if (wasUpdated) {\n this.sidToIdentity.set(info.sid, info.identity);\n }\n }\n return existingParticipant;\n }\n const participant = this.createParticipant(identity, info);\n this.remoteParticipants.set(identity, participant);\n\n this.sidToIdentity.set(info.sid, info.identity);\n // if we have valid info and the participant wasn't in the map before, we can assume the participant is new\n // firing here to make sure that `ParticipantConnected` fires before the initial track events\n this.emitWhenConnected(RoomEvent.ParticipantConnected, participant);\n\n // also forward events\n // trackPublished is only fired for tracks added after both local participant\n // and remote participant joined the room\n participant\n .on(ParticipantEvent.TrackPublished, (trackPublication: RemoteTrackPublication) => {\n this.emitWhenConnected(RoomEvent.TrackPublished, trackPublication, participant);\n })\n .on(\n ParticipantEvent.TrackSubscribed,\n (track: RemoteTrack, publication: RemoteTrackPublication) => {\n // monitor playback status\n if (track.kind === Track.Kind.Audio) {\n track.on(TrackEvent.AudioPlaybackStarted, this.handleAudioPlaybackStarted);\n track.on(TrackEvent.AudioPlaybackFailed, this.handleAudioPlaybackFailed);\n } else if (track.kind === Track.Kind.Video) {\n track.on(TrackEvent.VideoPlaybackFailed, this.handleVideoPlaybackFailed);\n track.on(TrackEvent.VideoPlaybackStarted, this.handleVideoPlaybackStarted);\n }\n this.emit(RoomEvent.TrackSubscribed, track, publication, participant);\n },\n )\n .on(ParticipantEvent.TrackUnpublished, (publication: RemoteTrackPublication) => {\n this.emit(RoomEvent.TrackUnpublished, publication, participant);\n })\n .on(\n ParticipantEvent.TrackUnsubscribed,\n (track: RemoteTrack, publication: RemoteTrackPublication) => {\n this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);\n },\n )\n .on(ParticipantEvent.TrackSubscriptionFailed, (sid: string) => {\n this.emit(RoomEvent.TrackSubscriptionFailed, sid, participant);\n })\n .on(ParticipantEvent.TrackMuted, (pub: TrackPublication) => {\n this.emitWhenConnected(RoomEvent.TrackMuted, pub, participant);\n })\n .on(ParticipantEvent.TrackUnmuted, (pub: TrackPublication) => {\n this.emitWhenConnected(RoomEvent.TrackUnmuted, pub, participant);\n })\n .on(ParticipantEvent.ParticipantMetadataChanged, (metadata: string | undefined) => {\n this.emitWhenConnected(RoomEvent.ParticipantMetadataChanged, metadata, participant);\n })\n .on(ParticipantEvent.ParticipantNameChanged, (name) => {\n this.emitWhenConnected(RoomEvent.ParticipantNameChanged, name, participant);\n })\n .on(ParticipantEvent.AttributesChanged, (changedAttributes: Record) => {\n this.emitWhenConnected(\n RoomEvent.ParticipantAttributesChanged,\n changedAttributes,\n participant,\n );\n })\n .on(ParticipantEvent.ConnectionQualityChanged, (quality: ConnectionQuality) => {\n this.emitWhenConnected(RoomEvent.ConnectionQualityChanged, quality, participant);\n })\n .on(\n ParticipantEvent.ParticipantPermissionsChanged,\n (prevPermissions?: ParticipantPermission) => {\n this.emitWhenConnected(\n RoomEvent.ParticipantPermissionsChanged,\n prevPermissions,\n participant,\n );\n },\n )\n .on(ParticipantEvent.TrackSubscriptionStatusChanged, (pub, status) => {\n this.emitWhenConnected(RoomEvent.TrackSubscriptionStatusChanged, pub, status, participant);\n })\n .on(ParticipantEvent.TrackSubscriptionFailed, (trackSid, error) => {\n this.emit(RoomEvent.TrackSubscriptionFailed, trackSid, participant, error);\n })\n .on(ParticipantEvent.TrackSubscriptionPermissionChanged, (pub, status) => {\n this.emitWhenConnected(\n RoomEvent.TrackSubscriptionPermissionChanged,\n pub,\n status,\n participant,\n );\n });\n\n // update info at the end after callbacks have been set up\n if (info) {\n participant.updateInfo(info);\n }\n return participant;\n }\n\n private sendSyncState() {\n const remoteTracks = Array.from(this.remoteParticipants.values()).reduce((acc, participant) => {\n acc.push(...(participant.getTrackPublications() as RemoteTrackPublication[])); // FIXME would be nice to have this return RemoteTrackPublications directly instead of the type cast\n return acc;\n }, [] as RemoteTrackPublication[]);\n const localTracks = this.localParticipant.getTrackPublications() as LocalTrackPublication[]; // FIXME would be nice to have this return LocalTrackPublications directly instead of the type cast\n this.engine.sendSyncState(remoteTracks, localTracks);\n }\n\n /**\n * After resuming, we'll need to notify the server of the current\n * subscription settings.\n */\n private updateSubscriptions() {\n for (const p of this.remoteParticipants.values()) {\n for (const pub of p.videoTrackPublications.values()) {\n if (pub.isSubscribed && pub instanceof RemoteTrackPublication) {\n pub.emitTrackUpdate();\n }\n }\n }\n }\n\n private getRemoteParticipantBySid(sid: string): RemoteParticipant | undefined {\n const identity = this.sidToIdentity.get(sid);\n if (identity) {\n return this.remoteParticipants.get(identity);\n }\n }\n\n private registerConnectionReconcile() {\n this.clearConnectionReconcile();\n let consecutiveFailures = 0;\n this.connectionReconcileInterval = CriticalTimers.setInterval(() => {\n if (\n // ensure we didn't tear it down\n !this.engine ||\n // engine detected close, but Room missed it\n this.engine.isClosed ||\n // transports failed without notifying engine\n !this.engine.verifyTransport()\n ) {\n consecutiveFailures++;\n this.log.warn('detected connection state mismatch', {\n ...this.logContext,\n numFailures: consecutiveFailures,\n engine: this.engine\n ? {\n closed: this.engine.isClosed,\n transportsConnected: this.engine.verifyTransport(),\n }\n : undefined,\n });\n if (consecutiveFailures >= 3) {\n this.recreateEngine();\n this.handleDisconnect(\n this.options.stopLocalTrackOnUnpublish,\n DisconnectReason.STATE_MISMATCH,\n );\n }\n } else {\n consecutiveFailures = 0;\n }\n }, connectionReconcileFrequency);\n }\n\n private clearConnectionReconcile() {\n if (this.connectionReconcileInterval) {\n CriticalTimers.clearInterval(this.connectionReconcileInterval);\n }\n }\n\n private setAndEmitConnectionState(state: ConnectionState): boolean {\n if (state === this.state) {\n // unchanged\n return false;\n }\n this.state = state;\n this.emit(RoomEvent.ConnectionStateChanged, this.state);\n return true;\n }\n\n private emitBufferedEvents() {\n this.bufferedEvents.forEach(([ev, args]) => {\n this.emit(ev, ...args);\n });\n this.bufferedEvents = [];\n }\n\n private emitWhenConnected(\n event: E,\n ...args: Parameters\n ): boolean {\n if (\n this.state === ConnectionState.Reconnecting ||\n this.isResuming ||\n !this.engine ||\n this.engine.pendingReconnect\n ) {\n // in case the room is reconnecting, buffer the events by firing them later after emitting RoomEvent.Reconnected\n this.bufferedEvents.push([event, args]);\n } else if (this.state === ConnectionState.Connected) {\n return this.emit(event, ...args);\n }\n return false;\n }\n\n private onLocalParticipantMetadataChanged = (metadata: string | undefined) => {\n this.emit(RoomEvent.ParticipantMetadataChanged, metadata, this.localParticipant);\n };\n\n private onLocalParticipantNameChanged = (name: string) => {\n this.emit(RoomEvent.ParticipantNameChanged, name, this.localParticipant);\n };\n\n private onLocalAttributesChanged = (changedAttributes: Record) => {\n this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, this.localParticipant);\n };\n\n private onLocalTrackMuted = (pub: TrackPublication) => {\n this.emit(RoomEvent.TrackMuted, pub, this.localParticipant);\n };\n\n private onLocalTrackUnmuted = (pub: TrackPublication) => {\n this.emit(RoomEvent.TrackUnmuted, pub, this.localParticipant);\n };\n\n private onTrackProcessorUpdate = (processor?: TrackProcessor) => {\n processor?.onPublish?.(this);\n };\n\n private onLocalTrackPublished = async (pub: LocalTrackPublication) => {\n pub.track?.on(TrackEvent.TrackProcessorUpdate, this.onTrackProcessorUpdate);\n pub.track?.on(TrackEvent.Restarted, this.onLocalTrackRestarted);\n pub.track?.getProcessor()?.onPublish?.(this);\n\n this.emit(RoomEvent.LocalTrackPublished, pub, this.localParticipant);\n\n if (pub.track instanceof LocalAudioTrack) {\n const trackIsSilent = await pub.track.checkForSilence();\n if (trackIsSilent) {\n this.emit(RoomEvent.LocalAudioSilenceDetected, pub);\n }\n }\n const deviceId = await pub.track?.getDeviceId(false);\n const deviceKind = sourceToKind(pub.source);\n if (\n deviceKind &&\n deviceId &&\n deviceId !== this.localParticipant.activeDeviceMap.get(deviceKind)\n ) {\n this.localParticipant.activeDeviceMap.set(deviceKind, deviceId);\n this.emit(RoomEvent.ActiveDeviceChanged, deviceKind, deviceId);\n }\n };\n\n private onLocalTrackUnpublished = (pub: LocalTrackPublication) => {\n pub.track?.off(TrackEvent.TrackProcessorUpdate, this.onTrackProcessorUpdate);\n pub.track?.off(TrackEvent.Restarted, this.onLocalTrackRestarted);\n this.emit(RoomEvent.LocalTrackUnpublished, pub, this.localParticipant);\n };\n\n private onLocalTrackRestarted = async (track: LocalTrack) => {\n const deviceId = await track.getDeviceId(false);\n const deviceKind = sourceToKind(track.source);\n if (\n deviceKind &&\n deviceId &&\n deviceId !== this.localParticipant.activeDeviceMap.get(deviceKind)\n ) {\n this.log.debug(\n `local track restarted, setting ${deviceKind} ${deviceId} active`,\n this.logContext,\n );\n this.localParticipant.activeDeviceMap.set(deviceKind, deviceId);\n this.emit(RoomEvent.ActiveDeviceChanged, deviceKind, deviceId);\n }\n };\n\n private onLocalConnectionQualityChanged = (quality: ConnectionQuality) => {\n this.emit(RoomEvent.ConnectionQualityChanged, quality, this.localParticipant);\n };\n\n private onMediaDevicesError = (e: Error) => {\n this.emit(RoomEvent.MediaDevicesError, e);\n };\n\n private onLocalParticipantPermissionsChanged = (prevPermissions?: ParticipantPermission) => {\n this.emit(RoomEvent.ParticipantPermissionsChanged, prevPermissions, this.localParticipant);\n };\n\n private onLocalChatMessageSent = (msg: ChatMessage) => {\n this.emit(RoomEvent.ChatMessage, msg, this.localParticipant);\n };\n\n /**\n * Allows to populate a room with simulated participants.\n * No actual connection to a server will be established, all state is\n * @experimental\n */\n async simulateParticipants(options: SimulationOptions) {\n const publishOptions = {\n audio: true,\n video: true,\n useRealTracks: false,\n ...options.publish,\n };\n const participantOptions = {\n count: 9,\n audio: false,\n video: true,\n aspectRatios: [1.66, 1.7, 1.3],\n ...options.participants,\n };\n this.handleDisconnect();\n this.roomInfo = new RoomModel({\n sid: 'RM_SIMULATED',\n name: 'simulated-room',\n emptyTimeout: 0,\n maxParticipants: 0,\n creationTime: protoInt64.parse(new Date().getTime()),\n metadata: '',\n numParticipants: 1,\n numPublishers: 1,\n turnPassword: '',\n enabledCodecs: [],\n activeRecording: false,\n });\n\n this.localParticipant.updateInfo(\n new ParticipantInfo({\n identity: 'simulated-local',\n name: 'local-name',\n }),\n );\n this.setupLocalParticipantEvents();\n this.emit(RoomEvent.SignalConnected);\n this.emit(RoomEvent.Connected);\n this.setAndEmitConnectionState(ConnectionState.Connected);\n if (publishOptions.video) {\n const camPub = new LocalTrackPublication(\n Track.Kind.Video,\n new TrackInfo({\n source: TrackSource.CAMERA,\n sid: Math.floor(Math.random() * 10_000).toString(),\n type: TrackType.AUDIO,\n name: 'video-dummy',\n }),\n new LocalVideoTrack(\n publishOptions.useRealTracks\n ? (\n await window.navigator.mediaDevices.getUserMedia({ video: true })\n ).getVideoTracks()[0]\n : createDummyVideoStreamTrack(\n 160 * (participantOptions.aspectRatios[0] ?? 1),\n 160,\n true,\n true,\n ),\n undefined,\n false,\n { loggerName: this.options.loggerName, loggerContextCb: () => this.logContext },\n ),\n { loggerName: this.options.loggerName, loggerContextCb: () => this.logContext },\n );\n // @ts-ignore\n this.localParticipant.addTrackPublication(camPub);\n this.localParticipant.emit(ParticipantEvent.LocalTrackPublished, camPub);\n }\n if (publishOptions.audio) {\n const audioPub = new LocalTrackPublication(\n Track.Kind.Audio,\n new TrackInfo({\n source: TrackSource.MICROPHONE,\n sid: Math.floor(Math.random() * 10_000).toString(),\n type: TrackType.AUDIO,\n }),\n new LocalAudioTrack(\n publishOptions.useRealTracks\n ? (await navigator.mediaDevices.getUserMedia({ audio: true })).getAudioTracks()[0]\n : getEmptyAudioStreamTrack(),\n undefined,\n false,\n this.audioContext,\n { loggerName: this.options.loggerName, loggerContextCb: () => this.logContext },\n ),\n { loggerName: this.options.loggerName, loggerContextCb: () => this.logContext },\n );\n // @ts-ignore\n this.localParticipant.addTrackPublication(audioPub);\n this.localParticipant.emit(ParticipantEvent.LocalTrackPublished, audioPub);\n }\n\n for (let i = 0; i < participantOptions.count - 1; i += 1) {\n let info: ParticipantInfo = new ParticipantInfo({\n sid: Math.floor(Math.random() * 10_000).toString(),\n identity: `simulated-${i}`,\n state: ParticipantInfo_State.ACTIVE,\n tracks: [],\n joinedAt: protoInt64.parse(Date.now()),\n });\n const p = this.getOrCreateParticipant(info.identity, info);\n if (participantOptions.video) {\n const dummyVideo = createDummyVideoStreamTrack(\n 160 * (participantOptions.aspectRatios[i % participantOptions.aspectRatios.length] ?? 1),\n 160,\n false,\n true,\n );\n const videoTrack = new TrackInfo({\n source: TrackSource.CAMERA,\n sid: Math.floor(Math.random() * 10_000).toString(),\n type: TrackType.AUDIO,\n });\n p.addSubscribedMediaTrack(\n dummyVideo,\n videoTrack.sid,\n new MediaStream([dummyVideo]),\n new RTCRtpReceiver(),\n );\n info.tracks = [...info.tracks, videoTrack];\n }\n if (participantOptions.audio) {\n const dummyTrack = getEmptyAudioStreamTrack();\n const audioTrack = new TrackInfo({\n source: TrackSource.MICROPHONE,\n sid: Math.floor(Math.random() * 10_000).toString(),\n type: TrackType.AUDIO,\n });\n p.addSubscribedMediaTrack(\n dummyTrack,\n audioTrack.sid,\n new MediaStream([dummyTrack]),\n new RTCRtpReceiver(),\n );\n info.tracks = [...info.tracks, audioTrack];\n }\n\n p.updateInfo(info);\n }\n }\n\n // /** @internal */\n emit(\n event: E,\n ...args: Parameters\n ): boolean {\n // active speaker updates are too spammy\n if (event !== RoomEvent.ActiveSpeakersChanged) {\n // only extract logContext from arguments in order to avoid logging the whole object tree\n const minimizedArgs = mapArgs(args).filter((arg: unknown) => arg !== undefined);\n this.log.debug(`room event ${event}`, { ...this.logContext, event, args: minimizedArgs });\n }\n return super.emit(event, ...args);\n }\n}\n\nfunction mapArgs(args: unknown[]): any {\n return args.map((arg: unknown) => {\n if (!arg) {\n return;\n }\n if (Array.isArray(arg)) {\n return mapArgs(arg);\n }\n if (typeof arg === 'object') {\n return 'logContext' in arg && arg.logContext;\n }\n return arg;\n });\n}\n\nexport default Room;\n\nexport type RoomEventCallbacks = {\n connected: () => void;\n reconnecting: () => void;\n signalReconnecting: () => void;\n reconnected: () => void;\n disconnected: (reason?: DisconnectReason) => void;\n connectionStateChanged: (state: ConnectionState) => void;\n mediaDevicesChanged: () => void;\n participantConnected: (participant: RemoteParticipant) => void;\n participantDisconnected: (participant: RemoteParticipant) => void;\n trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackSubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionFailed: (\n trackSid: string,\n participant: RemoteParticipant,\n reason?: SubscriptionError,\n ) => void;\n trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;\n trackUnsubscribed: (\n track: RemoteTrack,\n publication: RemoteTrackPublication,\n participant: RemoteParticipant,\n ) => void;\n trackMuted: (publication: TrackPublication, participant: Participant) => void;\n trackUnmuted: (publication: TrackPublication, participant: Participant) => void;\n localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n localTrackUnpublished: (\n publication: LocalTrackPublication,\n participant: LocalParticipant,\n ) => void;\n localAudioSilenceDetected: (publication: LocalTrackPublication) => void;\n participantMetadataChanged: (\n metadata: string | undefined,\n participant: RemoteParticipant | LocalParticipant,\n ) => void;\n participantNameChanged: (name: string, participant: RemoteParticipant | LocalParticipant) => void;\n participantPermissionsChanged: (\n prevPermissions: ParticipantPermission | undefined,\n participant: RemoteParticipant | LocalParticipant,\n ) => void;\n participantAttributesChanged: (\n changedAttributes: Record,\n participant: RemoteParticipant | LocalParticipant,\n ) => void;\n activeSpeakersChanged: (speakers: Array) => void;\n roomMetadataChanged: (metadata: string) => void;\n dataReceived: (\n payload: Uint8Array,\n participant?: RemoteParticipant,\n kind?: DataPacket_Kind,\n topic?: string,\n ) => void;\n sipDTMFReceived: (dtmf: SipDTMF, participant?: RemoteParticipant) => void;\n transcriptionReceived: (\n transcription: TranscriptionSegment[],\n participant?: Participant,\n publication?: TrackPublication,\n ) => void;\n connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;\n mediaDevicesError: (error: Error) => void;\n trackStreamStateChanged: (\n publication: RemoteTrackPublication,\n streamState: Track.StreamState,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionPermissionChanged: (\n publication: RemoteTrackPublication,\n status: TrackPublication.PermissionStatus,\n participant: RemoteParticipant,\n ) => void;\n trackSubscriptionStatusChanged: (\n publication: RemoteTrackPublication,\n status: TrackPublication.SubscriptionStatus,\n participant: RemoteParticipant,\n ) => void;\n audioPlaybackChanged: (playing: boolean) => void;\n videoPlaybackChanged: (playing: boolean) => void;\n signalConnected: () => void;\n recordingStatusChanged: (recording: boolean) => void;\n participantEncryptionStatusChanged: (encrypted: boolean, participant?: Participant) => void;\n encryptionError: (error: Error) => void;\n dcBufferStatusChanged: (isLow: boolean, kind: DataPacket_Kind) => void;\n activeDeviceChanged: (kind: MediaDeviceKind, deviceId: string) => void;\n chatMessage: (message: ChatMessage, participant?: RemoteParticipant | LocalParticipant) => void;\n localTrackSubscribed: (publication: LocalTrackPublication, participant: LocalParticipant) => void;\n metricsReceived: (metrics: MetricsBatch, participant?: Participant) => void;\n};\n","import {\n AddTrackRequest,\n ChatMessage as ChatMessageModel,\n Codec,\n DataPacket,\n DataPacket_Kind,\n Encryption_Type,\n ParticipantInfo,\n ParticipantPermission,\n RequestResponse,\n RequestResponse_Reason,\n RpcAck,\n RpcRequest,\n RpcResponse,\n SimulcastCodec,\n SipDTMF,\n SubscribedQualityUpdate,\n TrackInfo,\n TrackUnpublishedResponse,\n UserPacket,\n protoInt64,\n} from '@livekit/protocol';\nimport type { InternalRoomOptions } from '../../options';\nimport { PCTransportState } from '../PCTransportManager';\nimport type RTCEngine from '../RTCEngine';\nimport { defaultVideoCodec } from '../defaults';\nimport {\n DeviceUnsupportedError,\n LivekitError,\n SignalRequestError,\n TrackInvalidError,\n UnexpectedConnectionState,\n} from '../errors';\nimport { EngineEvent, ParticipantEvent, TrackEvent } from '../events';\nimport {\n MAX_PAYLOAD_BYTES,\n type PerformRpcParams,\n RpcError,\n type RpcInvocationData,\n byteLength,\n} from '../rpc';\nimport LocalAudioTrack from '../track/LocalAudioTrack';\nimport LocalTrack from '../track/LocalTrack';\nimport LocalTrackPublication from '../track/LocalTrackPublication';\nimport LocalVideoTrack, { videoLayersFromEncodings } from '../track/LocalVideoTrack';\nimport { Track } from '../track/Track';\nimport type {\n AudioCaptureOptions,\n BackupVideoCodec,\n CreateLocalTracksOptions,\n ScreenShareCaptureOptions,\n TrackPublishOptions,\n VideoCaptureOptions,\n} from '../track/options';\nimport { ScreenSharePresets, VideoPresets, isBackupCodec } from '../track/options';\nimport {\n constraintsForOptions,\n extractProcessorsFromOptions,\n getLogContextFromTrack,\n mergeDefaultOptions,\n mimeTypeToVideoCodecString,\n screenCaptureToDisplayMediaStreamOptions,\n} from '../track/utils';\nimport type { ChatMessage, DataPublishOptions } from '../types';\nimport {\n Future,\n compareVersions,\n isE2EESimulcastSupported,\n isFireFox,\n isSVCCodec,\n isSafari17,\n isWeb,\n sleep,\n supportsAV1,\n supportsVP9,\n} from '../utils';\nimport Participant from './Participant';\nimport type { ParticipantTrackPermission } from './ParticipantTrackPermission';\nimport { trackPermissionToProto } from './ParticipantTrackPermission';\nimport {\n computeTrackBackupEncodings,\n computeVideoEncodings,\n getDefaultDegradationPreference,\n mediaTrackToLocalTrack,\n} from './publishUtils';\n\nexport default class LocalParticipant extends Participant {\n audioTrackPublications: Map;\n\n videoTrackPublications: Map;\n\n /** map of track sid => all published tracks */\n trackPublications: Map;\n\n /** @internal */\n engine: RTCEngine;\n\n /** @internal */\n activeDeviceMap: Map;\n\n private pendingPublishing = new Set();\n\n private pendingPublishPromises = new Map>();\n\n private republishPromise: Promise | undefined;\n\n private cameraError: Error | undefined;\n\n private microphoneError: Error | undefined;\n\n private participantTrackPermissions: Array = [];\n\n private allParticipantsAllowedToSubscribe: boolean = true;\n\n // keep a pointer to room options\n private roomOptions: InternalRoomOptions;\n\n private encryptionType: Encryption_Type = Encryption_Type.NONE;\n\n private reconnectFuture?: Future;\n\n private pendingSignalRequests: Map<\n number,\n {\n resolve: (arg: any) => void;\n reject: (reason: LivekitError) => void;\n values: Partial>;\n }\n >;\n\n private enabledPublishVideoCodecs: Codec[] = [];\n\n private rpcHandlers: Map Promise> = new Map();\n\n private pendingAcks = new Map void; participantIdentity: string }>();\n\n private pendingResponses = new Map<\n string,\n {\n resolve: (payload: string | null, error: RpcError | null) => void;\n participantIdentity: string;\n }\n >();\n\n /** @internal */\n constructor(sid: string, identity: string, engine: RTCEngine, options: InternalRoomOptions) {\n super(sid, identity, undefined, undefined, undefined, {\n loggerName: options.loggerName,\n loggerContextCb: () => this.engine.logContext,\n });\n this.audioTrackPublications = new Map();\n this.videoTrackPublications = new Map();\n this.trackPublications = new Map();\n this.engine = engine;\n this.roomOptions = options;\n this.setupEngine(engine);\n this.activeDeviceMap = new Map([\n ['audioinput', 'default'],\n ['videoinput', 'default'],\n ['audiooutput', 'default'],\n ]);\n this.pendingSignalRequests = new Map();\n }\n\n get lastCameraError(): Error | undefined {\n return this.cameraError;\n }\n\n get lastMicrophoneError(): Error | undefined {\n return this.microphoneError;\n }\n\n get isE2EEEnabled(): boolean {\n return this.encryptionType !== Encryption_Type.NONE;\n }\n\n getTrackPublication(source: Track.Source): LocalTrackPublication | undefined {\n const track = super.getTrackPublication(source);\n if (track) {\n return track as LocalTrackPublication;\n }\n }\n\n getTrackPublicationByName(name: string): LocalTrackPublication | undefined {\n const track = super.getTrackPublicationByName(name);\n if (track) {\n return track as LocalTrackPublication;\n }\n }\n\n /**\n * @internal\n */\n setupEngine(engine: RTCEngine) {\n this.engine = engine;\n this.engine.on(EngineEvent.RemoteMute, (trackSid: string, muted: boolean) => {\n const pub = this.trackPublications.get(trackSid);\n if (!pub || !pub.track) {\n return;\n }\n if (muted) {\n pub.mute();\n } else {\n pub.unmute();\n }\n });\n\n this.engine\n .on(EngineEvent.Connected, this.handleReconnected)\n .on(EngineEvent.SignalRestarted, this.handleReconnected)\n .on(EngineEvent.SignalResumed, this.handleReconnected)\n .on(EngineEvent.Restarting, this.handleReconnecting)\n .on(EngineEvent.Resuming, this.handleReconnecting)\n .on(EngineEvent.LocalTrackUnpublished, this.handleLocalTrackUnpublished)\n .on(EngineEvent.SubscribedQualityUpdate, this.handleSubscribedQualityUpdate)\n .on(EngineEvent.Disconnected, this.handleDisconnected)\n .on(EngineEvent.SignalRequestResponse, this.handleSignalRequestResponse)\n .on(EngineEvent.DataPacketReceived, this.handleDataPacket);\n }\n\n private handleReconnecting = () => {\n if (!this.reconnectFuture) {\n this.reconnectFuture = new Future();\n }\n };\n\n private handleReconnected = () => {\n this.reconnectFuture?.resolve?.();\n this.reconnectFuture = undefined;\n this.updateTrackSubscriptionPermissions();\n };\n\n private handleDisconnected = () => {\n if (this.reconnectFuture) {\n this.reconnectFuture.promise.catch((e) => this.log.warn(e.message, this.logContext));\n this.reconnectFuture?.reject?.('Got disconnected during reconnection attempt');\n this.reconnectFuture = undefined;\n }\n };\n\n private handleSignalRequestResponse = (response: RequestResponse) => {\n const { requestId, reason, message } = response;\n const targetRequest = this.pendingSignalRequests.get(requestId);\n if (targetRequest) {\n if (reason !== RequestResponse_Reason.OK) {\n targetRequest.reject(new SignalRequestError(message, reason));\n }\n this.pendingSignalRequests.delete(requestId);\n }\n };\n\n private handleDataPacket = (packet: DataPacket) => {\n switch (packet.value.case) {\n case 'rpcRequest':\n let rpcRequest = packet.value.value as RpcRequest;\n this.handleIncomingRpcRequest(\n packet.participantIdentity,\n rpcRequest.id,\n rpcRequest.method,\n rpcRequest.payload,\n rpcRequest.responseTimeoutMs,\n rpcRequest.version,\n );\n break;\n case 'rpcResponse':\n let rpcResponse = packet.value.value as RpcResponse;\n let payload: string | null = null;\n let error: RpcError | null = null;\n\n if (rpcResponse.value.case === 'payload') {\n payload = rpcResponse.value.value;\n } else if (rpcResponse.value.case === 'error') {\n error = RpcError.fromProto(rpcResponse.value.value);\n }\n this.handleIncomingRpcResponse(rpcResponse.requestId, payload, error);\n break;\n case 'rpcAck':\n let rpcAck = packet.value.value as RpcAck;\n this.handleIncomingRpcAck(rpcAck.requestId);\n break;\n }\n };\n\n /**\n * Sets and updates the metadata of the local participant.\n * Note: this requires `canUpdateOwnMetadata` permission.\n * method will throw if the user doesn't have the required permissions\n * @param metadata\n */\n async setMetadata(metadata: string): Promise {\n await this.requestMetadataUpdate({ metadata });\n }\n\n /**\n * Sets and updates the name of the local participant.\n * Note: this requires `canUpdateOwnMetadata` permission.\n * method will throw if the user doesn't have the required permissions\n * @param metadata\n */\n async setName(name: string): Promise {\n await this.requestMetadataUpdate({ name });\n }\n\n /**\n * Set or update participant attributes. It will make updates only to keys that\n * are present in `attributes`, and will not override others.\n * Note: this requires `canUpdateOwnMetadata` permission.\n * @param attributes attributes to update\n */\n async setAttributes(attributes: Record) {\n await this.requestMetadataUpdate({ attributes });\n }\n\n private async requestMetadataUpdate({\n metadata,\n name,\n attributes,\n }: {\n metadata?: string;\n name?: string;\n attributes?: Record;\n }) {\n return new Promise(async (resolve, reject) => {\n try {\n let isRejected = false;\n const requestId = await this.engine.client.sendUpdateLocalMetadata(\n metadata ?? this.metadata ?? '',\n name ?? this.name ?? '',\n attributes,\n );\n const startTime = performance.now();\n this.pendingSignalRequests.set(requestId, {\n resolve,\n reject: (error: LivekitError) => {\n reject(error);\n isRejected = true;\n },\n values: { name, metadata, attributes },\n });\n while (performance.now() - startTime < 5_000 && !isRejected) {\n if (\n (!name || this.name === name) &&\n (!metadata || this.metadata === metadata) &&\n (!attributes ||\n Object.entries(attributes).every(\n ([key, value]) =>\n this.attributes[key] === value || (value === '' && !this.attributes[key]),\n ))\n ) {\n this.pendingSignalRequests.delete(requestId);\n resolve();\n return;\n }\n await sleep(50);\n }\n reject(\n new SignalRequestError('Request to update local metadata timed out', 'TimeoutError'),\n );\n } catch (e: any) {\n if (e instanceof Error) reject(e);\n }\n });\n }\n\n /**\n * Enable or disable a participant's camera track.\n *\n * If a track has already published, it'll mute or unmute the track.\n * Resolves with a `LocalTrackPublication` instance if successful and `undefined` otherwise\n */\n setCameraEnabled(\n enabled: boolean,\n options?: VideoCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise {\n return this.setTrackEnabled(Track.Source.Camera, enabled, options, publishOptions);\n }\n\n /**\n * Enable or disable a participant's microphone track.\n *\n * If a track has already published, it'll mute or unmute the track.\n * Resolves with a `LocalTrackPublication` instance if successful and `undefined` otherwise\n */\n setMicrophoneEnabled(\n enabled: boolean,\n options?: AudioCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise {\n return this.setTrackEnabled(Track.Source.Microphone, enabled, options, publishOptions);\n }\n\n /**\n * Start or stop sharing a participant's screen\n * Resolves with a `LocalTrackPublication` instance if successful and `undefined` otherwise\n */\n setScreenShareEnabled(\n enabled: boolean,\n options?: ScreenShareCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise {\n return this.setTrackEnabled(Track.Source.ScreenShare, enabled, options, publishOptions);\n }\n\n /** @internal */\n setPermissions(permissions: ParticipantPermission): boolean {\n const prevPermissions = this.permissions;\n const changed = super.setPermissions(permissions);\n if (changed && prevPermissions) {\n this.emit(ParticipantEvent.ParticipantPermissionsChanged, prevPermissions);\n }\n return changed;\n }\n\n /** @internal */\n async setE2EEEnabled(enabled: boolean) {\n this.encryptionType = enabled ? Encryption_Type.GCM : Encryption_Type.NONE;\n await this.republishAllTracks(undefined, false);\n }\n\n /**\n * Enable or disable publishing for a track by source. This serves as a simple\n * way to manage the common tracks (camera, mic, or screen share).\n * Resolves with LocalTrackPublication if successful and void otherwise\n */\n private async setTrackEnabled(\n source: Extract,\n enabled: boolean,\n options?: VideoCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise;\n private async setTrackEnabled(\n source: Extract,\n enabled: boolean,\n options?: AudioCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise;\n private async setTrackEnabled(\n source: Extract,\n enabled: boolean,\n options?: ScreenShareCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ): Promise;\n private async setTrackEnabled(\n source: Track.Source,\n enabled: true,\n options?: VideoCaptureOptions | AudioCaptureOptions | ScreenShareCaptureOptions,\n publishOptions?: TrackPublishOptions,\n ) {\n this.log.debug('setTrackEnabled', { ...this.logContext, source, enabled });\n if (this.republishPromise) {\n await this.republishPromise;\n }\n let track = this.getTrackPublication(source);\n if (enabled) {\n if (track) {\n await track.unmute();\n } else {\n let localTracks: Array | undefined;\n if (this.pendingPublishing.has(source)) {\n const pendingTrack = await this.waitForPendingPublicationOfSource(source);\n if (!pendingTrack) {\n this.log.info('waiting for pending publication promise timed out', {\n ...this.logContext,\n source,\n });\n }\n await pendingTrack?.unmute();\n return pendingTrack;\n }\n this.pendingPublishing.add(source);\n try {\n switch (source) {\n case Track.Source.Camera:\n localTracks = await this.createTracks({\n video: (options as VideoCaptureOptions | undefined) ?? true,\n });\n\n break;\n case Track.Source.Microphone:\n localTracks = await this.createTracks({\n audio: (options as AudioCaptureOptions | undefined) ?? true,\n });\n break;\n case Track.Source.ScreenShare:\n localTracks = await this.createScreenTracks({\n ...(options as ScreenShareCaptureOptions | undefined),\n });\n break;\n default:\n throw new TrackInvalidError(source);\n }\n } catch (e: unknown) {\n localTracks?.forEach((tr) => {\n tr.stop();\n });\n if (e instanceof Error) {\n this.emit(ParticipantEvent.MediaDevicesError, e);\n }\n throw e;\n }\n try {\n const publishPromises: Array> = [];\n for (const localTrack of localTracks) {\n this.log.info('publishing track', {\n ...this.logContext,\n ...getLogContextFromTrack(localTrack),\n });\n publishPromises.push(this.publishTrack(localTrack, publishOptions));\n }\n const publishedTracks = await Promise.all(publishPromises);\n // for screen share publications including audio, this will only return the screen share publication, not the screen share audio one\n // revisit if we want to return an array of tracks instead for v2\n [track] = publishedTracks;\n } catch (e) {\n localTracks?.forEach((tr) => {\n tr.stop();\n });\n throw e;\n } finally {\n this.pendingPublishing.delete(source);\n }\n }\n } else {\n if (!track?.track && this.pendingPublishing.has(source)) {\n // if there's no track available yet first wait for pending publishing promises of that source to see if it becomes available\n track = await this.waitForPendingPublicationOfSource(source);\n if (!track) {\n this.log.info('waiting for pending publication promise timed out', {\n ...this.logContext,\n source,\n });\n }\n }\n if (track && track.track) {\n // screenshare cannot be muted, unpublish instead\n if (source === Track.Source.ScreenShare) {\n track = await this.unpublishTrack(track.track);\n const screenAudioTrack = this.getTrackPublication(Track.Source.ScreenShareAudio);\n if (screenAudioTrack && screenAudioTrack.track) {\n this.unpublishTrack(screenAudioTrack.track);\n }\n } else {\n await track.mute();\n }\n }\n }\n return track;\n }\n\n /**\n * Publish both camera and microphone at the same time. This is useful for\n * displaying a single Permission Dialog box to the end user.\n */\n async enableCameraAndMicrophone() {\n if (\n this.pendingPublishing.has(Track.Source.Camera) ||\n this.pendingPublishing.has(Track.Source.Microphone)\n ) {\n // no-op it's already been requested\n return;\n }\n\n this.pendingPublishing.add(Track.Source.Camera);\n this.pendingPublishing.add(Track.Source.Microphone);\n try {\n const tracks: LocalTrack[] = await this.createTracks({\n audio: true,\n video: true,\n });\n\n await Promise.all(tracks.map((track) => this.publishTrack(track)));\n } finally {\n this.pendingPublishing.delete(Track.Source.Camera);\n this.pendingPublishing.delete(Track.Source.Microphone);\n }\n }\n\n /**\n * Create local camera and/or microphone tracks\n * @param options\n * @returns\n */\n async createTracks(options?: CreateLocalTracksOptions): Promise {\n options ??= {};\n const { audioProcessor, videoProcessor, optionsWithoutProcessor } =\n extractProcessorsFromOptions(options);\n\n const mergedOptions = mergeDefaultOptions(\n optionsWithoutProcessor,\n this.roomOptions?.audioCaptureDefaults,\n this.roomOptions?.videoCaptureDefaults,\n );\n\n const constraints = constraintsForOptions(mergedOptions);\n let stream: MediaStream | undefined;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err instanceof Error) {\n if (constraints.audio) {\n this.microphoneError = err;\n }\n if (constraints.video) {\n this.cameraError = err;\n }\n }\n\n throw err;\n }\n\n if (constraints.audio) {\n this.microphoneError = undefined;\n this.emit(ParticipantEvent.AudioStreamAcquired);\n }\n if (constraints.video) {\n this.cameraError = undefined;\n }\n\n return Promise.all(\n stream.getTracks().map(async (mediaStreamTrack) => {\n const isAudio = mediaStreamTrack.kind === 'audio';\n let trackOptions = isAudio ? mergedOptions!.audio : mergedOptions!.video;\n if (typeof trackOptions === 'boolean' || !trackOptions) {\n trackOptions = {};\n }\n let trackConstraints: MediaTrackConstraints | undefined;\n const conOrBool = isAudio ? constraints.audio : constraints.video;\n if (typeof conOrBool !== 'boolean') {\n trackConstraints = conOrBool;\n }\n const track = mediaTrackToLocalTrack(mediaStreamTrack, trackConstraints, {\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n if (track.kind === Track.Kind.Video) {\n track.source = Track.Source.Camera;\n } else if (track.kind === Track.Kind.Audio) {\n track.source = Track.Source.Microphone;\n track.setAudioContext(this.audioContext);\n }\n track.mediaStream = stream;\n if (track instanceof LocalAudioTrack && audioProcessor) {\n await track.setProcessor(audioProcessor);\n } else if (track instanceof LocalVideoTrack && videoProcessor) {\n await track.setProcessor(videoProcessor);\n }\n return track;\n }),\n );\n }\n\n /**\n * Creates a screen capture tracks with getDisplayMedia().\n * A LocalVideoTrack is always created and returned.\n * If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.\n */\n async createScreenTracks(options?: ScreenShareCaptureOptions): Promise> {\n if (options === undefined) {\n options = {};\n }\n\n if (navigator.mediaDevices.getDisplayMedia === undefined) {\n throw new DeviceUnsupportedError('getDisplayMedia not supported');\n }\n\n if (options.resolution === undefined && !isSafari17()) {\n // we need to constrain the dimensions, otherwise it could lead to low bitrate\n // due to encoding a huge video. Encoding such large surfaces is really expensive\n // unfortunately Safari 17 has a but and cannot be constrained by default\n options.resolution = ScreenSharePresets.h1080fps30.resolution;\n }\n\n const constraints = screenCaptureToDisplayMediaStreamOptions(options);\n const stream: MediaStream = await navigator.mediaDevices.getDisplayMedia(constraints);\n\n const tracks = stream.getVideoTracks();\n if (tracks.length === 0) {\n throw new TrackInvalidError('no video track found');\n }\n const screenVideo = new LocalVideoTrack(tracks[0], undefined, false, {\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n screenVideo.source = Track.Source.ScreenShare;\n if (options.contentHint) {\n screenVideo.mediaStreamTrack.contentHint = options.contentHint;\n }\n\n const localTracks: Array = [screenVideo];\n if (stream.getAudioTracks().length > 0) {\n this.emit(ParticipantEvent.AudioStreamAcquired);\n const screenAudio = new LocalAudioTrack(\n stream.getAudioTracks()[0],\n undefined,\n false,\n this.audioContext,\n { loggerName: this.roomOptions.loggerName, loggerContextCb: () => this.logContext },\n );\n screenAudio.source = Track.Source.ScreenShareAudio;\n localTracks.push(screenAudio);\n }\n return localTracks;\n }\n\n /**\n * Publish a new track to the room\n * @param track\n * @param options\n */\n async publishTrack(track: LocalTrack | MediaStreamTrack, options?: TrackPublishOptions) {\n return this.publishOrRepublishTrack(track, options);\n }\n\n private async publishOrRepublishTrack(\n track: LocalTrack | MediaStreamTrack,\n options?: TrackPublishOptions,\n isRepublish = false,\n ): Promise {\n if (track instanceof LocalAudioTrack) {\n track.setAudioContext(this.audioContext);\n }\n\n await this.reconnectFuture?.promise;\n if (this.republishPromise && !isRepublish) {\n await this.republishPromise;\n }\n if (track instanceof LocalTrack && this.pendingPublishPromises.has(track)) {\n await this.pendingPublishPromises.get(track);\n }\n let defaultConstraints: MediaTrackConstraints | undefined;\n if (track instanceof MediaStreamTrack) {\n defaultConstraints = track.getConstraints();\n } else {\n // we want to access constraints directly as `track.mediaStreamTrack`\n // might be pointing to a non-device track (e.g. processed track) already\n defaultConstraints = track.constraints;\n let deviceKind: MediaDeviceKind | undefined = undefined;\n switch (track.source) {\n case Track.Source.Microphone:\n deviceKind = 'audioinput';\n break;\n case Track.Source.Camera:\n deviceKind = 'videoinput';\n default:\n break;\n }\n if (deviceKind && this.activeDeviceMap.has(deviceKind)) {\n defaultConstraints = {\n ...defaultConstraints,\n deviceId: this.activeDeviceMap.get(deviceKind),\n };\n }\n }\n // convert raw media track into audio or video track\n if (track instanceof MediaStreamTrack) {\n switch (track.kind) {\n case 'audio':\n track = new LocalAudioTrack(track, defaultConstraints, true, this.audioContext, {\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n break;\n case 'video':\n track = new LocalVideoTrack(track, defaultConstraints, true, {\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n break;\n default:\n throw new TrackInvalidError(`unsupported MediaStreamTrack kind ${track.kind}`);\n }\n } else {\n track.updateLoggerOptions({\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n }\n\n // is it already published? if so skip\n let existingPublication: LocalTrackPublication | undefined;\n this.trackPublications.forEach((publication) => {\n if (!publication.track) {\n return;\n }\n if (publication.track === track) {\n existingPublication = publication;\n }\n });\n\n if (existingPublication) {\n this.log.warn('track has already been published, skipping', {\n ...this.logContext,\n ...getLogContextFromTrack(existingPublication),\n });\n return existingPublication;\n }\n\n const isStereoInput =\n ('channelCount' in track.mediaStreamTrack.getSettings() &&\n // @ts-ignore `channelCount` on getSettings() is currently only available for Safari, but is generally the best way to determine a stereo track https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings/channelCount\n track.mediaStreamTrack.getSettings().channelCount === 2) ||\n track.mediaStreamTrack.getConstraints().channelCount === 2;\n const isStereo = options?.forceStereo ?? isStereoInput;\n\n // disable dtx for stereo track if not enabled explicitly\n if (isStereo) {\n if (!options) {\n options = {};\n }\n if (options.dtx === undefined) {\n this.log.info(\n `Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.`,\n {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n },\n );\n }\n if (options.red === undefined) {\n this.log.info(\n `Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work.`,\n );\n }\n options.dtx ??= false;\n options.red ??= false;\n }\n const opts: TrackPublishOptions = {\n ...this.roomOptions.publishDefaults,\n ...options,\n };\n\n if (!isE2EESimulcastSupported() && this.roomOptions.e2ee) {\n this.log.info(\n `End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2`,\n {\n ...this.logContext,\n },\n );\n opts.simulcast = false;\n }\n\n if (opts.source) {\n track.source = opts.source;\n }\n const publishPromise = this.publish(track, opts, isStereo);\n this.pendingPublishPromises.set(track, publishPromise);\n try {\n const publication = await publishPromise;\n return publication;\n } catch (e) {\n throw e;\n } finally {\n this.pendingPublishPromises.delete(track);\n }\n }\n\n private async publish(track: LocalTrack, opts: TrackPublishOptions, isStereo: boolean) {\n const existingTrackOfSource = Array.from(this.trackPublications.values()).find(\n (publishedTrack) => track instanceof LocalTrack && publishedTrack.source === track.source,\n );\n if (existingTrackOfSource && track.source !== Track.Source.Unknown) {\n this.log.info(`publishing a second track with the same source: ${track.source}`, {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n }\n if (opts.stopMicTrackOnMute && track instanceof LocalAudioTrack) {\n track.stopOnMute = true;\n }\n\n if (track.source === Track.Source.ScreenShare && isFireFox()) {\n // Firefox does not work well with simulcasted screen share\n // we frequently get no data on layer 0 when enabled\n opts.simulcast = false;\n }\n\n // require full AV1/VP9 SVC support prior to using it\n if (opts.videoCodec === 'av1' && !supportsAV1()) {\n opts.videoCodec = undefined;\n }\n if (opts.videoCodec === 'vp9' && !supportsVP9()) {\n opts.videoCodec = undefined;\n }\n if (opts.videoCodec === undefined) {\n opts.videoCodec = defaultVideoCodec;\n }\n if (this.enabledPublishVideoCodecs.length > 0) {\n // fallback to a supported codec if it is not supported\n if (\n !this.enabledPublishVideoCodecs.some(\n (c) => opts.videoCodec === mimeTypeToVideoCodecString(c.mime),\n )\n ) {\n opts.videoCodec = mimeTypeToVideoCodecString(this.enabledPublishVideoCodecs[0].mime);\n }\n }\n\n const videoCodec = opts.videoCodec;\n\n // handle track actions\n track.on(TrackEvent.Muted, this.onTrackMuted);\n track.on(TrackEvent.Unmuted, this.onTrackUnmuted);\n track.on(TrackEvent.Ended, this.handleTrackEnded);\n track.on(TrackEvent.UpstreamPaused, this.onTrackUpstreamPaused);\n track.on(TrackEvent.UpstreamResumed, this.onTrackUpstreamResumed);\n track.on(TrackEvent.AudioTrackFeatureUpdate, this.onTrackFeatureUpdate);\n\n // create track publication from track\n const req = new AddTrackRequest({\n // get local track id for use during publishing\n cid: track.mediaStreamTrack.id,\n name: opts.name,\n type: Track.kindToProto(track.kind),\n muted: track.isMuted,\n source: Track.sourceToProto(track.source),\n disableDtx: !(opts.dtx ?? true),\n encryption: this.encryptionType,\n stereo: isStereo,\n disableRed: this.isE2EEEnabled || !(opts.red ?? true),\n stream: opts?.stream,\n });\n\n // compute encodings and layers for video\n let encodings: RTCRtpEncodingParameters[] | undefined;\n if (track.kind === Track.Kind.Video) {\n let dims: Track.Dimensions = {\n width: 0,\n height: 0,\n };\n try {\n dims = await track.waitForDimensions();\n } catch (e) {\n // use defaults, it's quite painful for congestion control without simulcast\n // so using default dims according to publish settings\n const defaultRes =\n this.roomOptions.videoCaptureDefaults?.resolution ?? VideoPresets.h720.resolution;\n dims = {\n width: defaultRes.width,\n height: defaultRes.height,\n };\n // log failure\n this.log.error('could not determine track dimensions, using defaults', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n dims,\n });\n }\n // width and height should be defined for video\n req.width = dims.width;\n req.height = dims.height;\n // for svc codecs, disable simulcast and use vp8 for backup codec\n if (track instanceof LocalVideoTrack) {\n if (isSVCCodec(videoCodec)) {\n if (track.source === Track.Source.ScreenShare) {\n // vp9 svc with screenshare cannot encode multiple spatial layers\n // doing so reduces publish resolution to minimal resolution\n opts.scalabilityMode = 'L1T3';\n // Chrome does not allow more than 5 fps with L1T3, and it has encoding bugs with L3T3\n // It has a different path for screenshare handling and it seems to be untested/buggy\n // As a workaround, we are setting contentHint to force it to go through the same\n // path as regular camera video. While this is not optimal, it delivers the performance\n // that we need\n if ('contentHint' in track.mediaStreamTrack) {\n track.mediaStreamTrack.contentHint = 'motion';\n this.log.info('forcing contentHint to motion for screenshare with SVC codecs', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n }\n }\n // set scalabilityMode to 'L3T3_KEY' by default\n opts.scalabilityMode = opts.scalabilityMode ?? 'L3T3_KEY';\n }\n\n req.simulcastCodecs = [\n new SimulcastCodec({\n codec: videoCodec,\n cid: track.mediaStreamTrack.id,\n }),\n ];\n\n // set up backup\n if (opts.backupCodec === true) {\n opts.backupCodec = { codec: defaultVideoCodec };\n }\n if (\n opts.backupCodec &&\n videoCodec !== opts.backupCodec.codec &&\n // TODO remove this once e2ee is supported for backup codecs\n req.encryption === Encryption_Type.NONE\n ) {\n // multi-codec simulcast requires dynacast\n if (!this.roomOptions.dynacast) {\n this.roomOptions.dynacast = true;\n }\n req.simulcastCodecs.push(\n new SimulcastCodec({\n codec: opts.backupCodec.codec,\n cid: '',\n }),\n );\n }\n }\n\n encodings = computeVideoEncodings(\n track.source === Track.Source.ScreenShare,\n req.width,\n req.height,\n opts,\n );\n req.layers = videoLayersFromEncodings(\n req.width,\n req.height,\n encodings,\n isSVCCodec(opts.videoCodec),\n );\n } else if (track.kind === Track.Kind.Audio) {\n encodings = [\n {\n maxBitrate: opts.audioPreset?.maxBitrate,\n priority: opts.audioPreset?.priority ?? 'high',\n networkPriority: opts.audioPreset?.priority ?? 'high',\n },\n ];\n }\n\n if (!this.engine || this.engine.isClosed) {\n throw new UnexpectedConnectionState('cannot publish track when not connected');\n }\n\n const negotiate = async () => {\n if (!this.engine.pcManager) {\n throw new UnexpectedConnectionState('pcManager is not ready');\n }\n\n track.sender = await this.engine.createSender(track, opts, encodings);\n\n if (track instanceof LocalVideoTrack) {\n opts.degradationPreference ??= getDefaultDegradationPreference(track);\n track.setDegradationPreference(opts.degradationPreference);\n }\n\n if (encodings) {\n if (isFireFox() && track.kind === Track.Kind.Audio) {\n /* Refer to RFC https://datatracker.ietf.org/doc/html/rfc7587#section-6.1,\n livekit-server uses maxaveragebitrate=510000 in the answer sdp to permit client to\n publish high quality audio track. But firefox always uses this value as the actual\n bitrates, causing the audio bitrates to rise to 510Kbps in any stereo case unexpectedly.\n So the client need to modify maxaverragebitrates in answer sdp to user provided value to\n fix the issue.\n */\n let trackTransceiver: RTCRtpTransceiver | undefined = undefined;\n for (const transceiver of this.engine.pcManager.publisher.getTransceivers()) {\n if (transceiver.sender === track.sender) {\n trackTransceiver = transceiver;\n break;\n }\n }\n if (trackTransceiver) {\n this.engine.pcManager.publisher.setTrackCodecBitrate({\n transceiver: trackTransceiver,\n codec: 'opus',\n maxbr: encodings[0]?.maxBitrate ? encodings[0].maxBitrate / 1000 : 0,\n });\n }\n } else if (track.codec && isSVCCodec(track.codec) && encodings[0]?.maxBitrate) {\n this.engine.pcManager.publisher.setTrackCodecBitrate({\n cid: req.cid,\n codec: track.codec,\n maxbr: encodings[0].maxBitrate / 1000,\n });\n }\n }\n\n await this.engine.negotiate();\n };\n\n let ti: TrackInfo;\n if (this.enabledPublishVideoCodecs.length > 0) {\n const rets = await Promise.all([this.engine.addTrack(req), negotiate()]);\n ti = rets[0];\n } else {\n ti = await this.engine.addTrack(req);\n // server might not support the codec the client has requested, in that case, fallback\n // to a supported codec\n let primaryCodecMime: string | undefined;\n ti.codecs.forEach((codec) => {\n if (primaryCodecMime === undefined) {\n primaryCodecMime = codec.mimeType;\n }\n });\n if (primaryCodecMime && track.kind === Track.Kind.Video) {\n const updatedCodec = mimeTypeToVideoCodecString(primaryCodecMime);\n if (updatedCodec !== videoCodec) {\n this.log.debug('falling back to server selected codec', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n codec: updatedCodec,\n });\n opts.videoCodec = updatedCodec;\n\n // recompute encodings since bitrates/etc could have changed\n encodings = computeVideoEncodings(\n track.source === Track.Source.ScreenShare,\n req.width,\n req.height,\n opts,\n );\n }\n }\n await negotiate();\n }\n\n const publication = new LocalTrackPublication(track.kind, ti, track, {\n loggerName: this.roomOptions.loggerName,\n loggerContextCb: () => this.logContext,\n });\n // save options for when it needs to be republished again\n publication.options = opts;\n track.sid = ti.sid;\n\n this.log.debug(`publishing ${track.kind} with encodings`, {\n ...this.logContext,\n encodings,\n trackInfo: ti,\n });\n\n if (track instanceof LocalVideoTrack) {\n track.startMonitor(this.engine.client);\n } else if (track instanceof LocalAudioTrack) {\n track.startMonitor();\n }\n\n this.addTrackPublication(publication);\n // send event for publication\n this.emit(ParticipantEvent.LocalTrackPublished, publication);\n return publication;\n }\n\n override get isLocal(): boolean {\n return true;\n }\n\n /** @internal\n * publish additional codec to existing track\n */\n async publishAdditionalCodecForTrack(\n track: LocalTrack | MediaStreamTrack,\n videoCodec: BackupVideoCodec,\n options?: TrackPublishOptions,\n ) {\n // TODO remove once e2ee is supported for backup tracks\n if (this.encryptionType !== Encryption_Type.NONE) {\n return;\n }\n\n // is it not published? if so skip\n let existingPublication: LocalTrackPublication | undefined;\n this.trackPublications.forEach((publication) => {\n if (!publication.track) {\n return;\n }\n if (publication.track === track) {\n existingPublication = publication;\n }\n });\n if (!existingPublication) {\n throw new TrackInvalidError('track is not published');\n }\n\n if (!(track instanceof LocalVideoTrack)) {\n throw new TrackInvalidError('track is not a video track');\n }\n\n const opts: TrackPublishOptions = {\n ...this.roomOptions?.publishDefaults,\n ...options,\n };\n\n const encodings = computeTrackBackupEncodings(track, videoCodec, opts);\n if (!encodings) {\n this.log.info(\n `backup codec has been disabled, ignoring request to add additional codec for track`,\n {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n },\n );\n return;\n }\n const simulcastTrack = track.addSimulcastTrack(videoCodec, encodings);\n if (!simulcastTrack) {\n return;\n }\n const req = new AddTrackRequest({\n cid: simulcastTrack.mediaStreamTrack.id,\n type: Track.kindToProto(track.kind),\n muted: track.isMuted,\n source: Track.sourceToProto(track.source),\n sid: track.sid,\n simulcastCodecs: [\n {\n codec: opts.videoCodec,\n cid: simulcastTrack.mediaStreamTrack.id,\n },\n ],\n });\n req.layers = videoLayersFromEncodings(req.width, req.height, encodings);\n\n if (!this.engine || this.engine.isClosed) {\n throw new UnexpectedConnectionState('cannot publish track when not connected');\n }\n\n const negotiate = async () => {\n const transceiverInit: RTCRtpTransceiverInit = { direction: 'sendonly' };\n if (encodings) {\n transceiverInit.sendEncodings = encodings;\n }\n await this.engine.createSimulcastSender(track, simulcastTrack, opts, encodings);\n\n await this.engine.negotiate();\n };\n\n const rets = await Promise.all([this.engine.addTrack(req), negotiate()]);\n const ti = rets[0];\n\n this.log.debug(`published ${videoCodec} for track ${track.sid}`, {\n ...this.logContext,\n encodings,\n trackInfo: ti,\n });\n }\n\n async unpublishTrack(\n track: LocalTrack | MediaStreamTrack,\n stopOnUnpublish?: boolean,\n ): Promise {\n if (track instanceof LocalTrack) {\n const publishPromise = this.pendingPublishPromises.get(track);\n if (publishPromise) {\n this.log.info('awaiting publish promise before attempting to unpublish', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n await publishPromise;\n }\n }\n // look through all published tracks to find the right ones\n const publication = this.getPublicationForTrack(track);\n\n const pubLogContext = publication ? getLogContextFromTrack(publication) : undefined;\n\n this.log.debug('unpublishing track', {\n ...this.logContext,\n ...pubLogContext,\n });\n\n if (!publication || !publication.track) {\n this.log.warn('track was not unpublished because no publication was found', {\n ...this.logContext,\n ...pubLogContext,\n });\n return undefined;\n }\n\n track = publication.track;\n track.off(TrackEvent.Muted, this.onTrackMuted);\n track.off(TrackEvent.Unmuted, this.onTrackUnmuted);\n track.off(TrackEvent.Ended, this.handleTrackEnded);\n track.off(TrackEvent.UpstreamPaused, this.onTrackUpstreamPaused);\n track.off(TrackEvent.UpstreamResumed, this.onTrackUpstreamResumed);\n track.off(TrackEvent.AudioTrackFeatureUpdate, this.onTrackFeatureUpdate);\n\n if (stopOnUnpublish === undefined) {\n stopOnUnpublish = this.roomOptions?.stopLocalTrackOnUnpublish ?? true;\n }\n if (stopOnUnpublish) {\n track.stop();\n } else {\n track.stopMonitor();\n }\n\n let negotiationNeeded = false;\n const trackSender = track.sender;\n track.sender = undefined;\n if (\n this.engine.pcManager &&\n this.engine.pcManager.currentState < PCTransportState.FAILED &&\n trackSender\n ) {\n try {\n for (const transceiver of this.engine.pcManager.publisher.getTransceivers()) {\n // if sender is not currently sending (after replaceTrack(null))\n // removeTrack would have no effect.\n // to ensure we end up successfully removing the track, manually set\n // the transceiver to inactive\n if (transceiver.sender === trackSender) {\n transceiver.direction = 'inactive';\n negotiationNeeded = true;\n }\n }\n if (this.engine.removeTrack(trackSender)) {\n negotiationNeeded = true;\n }\n if (track instanceof LocalVideoTrack) {\n for (const [, trackInfo] of track.simulcastCodecs) {\n if (trackInfo.sender) {\n if (this.engine.removeTrack(trackInfo.sender)) {\n negotiationNeeded = true;\n }\n trackInfo.sender = undefined;\n }\n }\n track.simulcastCodecs.clear();\n }\n } catch (e) {\n this.log.warn('failed to unpublish track', {\n ...this.logContext,\n ...pubLogContext,\n error: e,\n });\n }\n }\n\n // remove from our maps\n this.trackPublications.delete(publication.trackSid);\n switch (publication.kind) {\n case Track.Kind.Audio:\n this.audioTrackPublications.delete(publication.trackSid);\n break;\n case Track.Kind.Video:\n this.videoTrackPublications.delete(publication.trackSid);\n break;\n default:\n break;\n }\n\n this.emit(ParticipantEvent.LocalTrackUnpublished, publication);\n publication.setTrack(undefined);\n\n if (negotiationNeeded) {\n await this.engine.negotiate();\n }\n return publication;\n }\n\n async unpublishTracks(\n tracks: LocalTrack[] | MediaStreamTrack[],\n ): Promise {\n const results = await Promise.all(tracks.map((track) => this.unpublishTrack(track)));\n return results.filter(\n (track) => track instanceof LocalTrackPublication,\n ) as LocalTrackPublication[];\n }\n\n async republishAllTracks(options?: TrackPublishOptions, restartTracks: boolean = true) {\n if (this.republishPromise) {\n await this.republishPromise;\n }\n this.republishPromise = new Promise(async (resolve, reject) => {\n try {\n const localPubs: LocalTrackPublication[] = [];\n this.trackPublications.forEach((pub) => {\n if (pub.track) {\n if (options) {\n pub.options = { ...pub.options, ...options };\n }\n localPubs.push(pub);\n }\n });\n\n await Promise.all(\n localPubs.map(async (pub) => {\n const track = pub.track!;\n await this.unpublishTrack(track, false);\n if (\n restartTracks &&\n !track.isMuted &&\n track.source !== Track.Source.ScreenShare &&\n track.source !== Track.Source.ScreenShareAudio &&\n (track instanceof LocalAudioTrack || track instanceof LocalVideoTrack) &&\n !track.isUserProvided\n ) {\n // generally we need to restart the track before publishing, often a full reconnect\n // is necessary because computer had gone to sleep.\n this.log.debug('restarting existing track', {\n ...this.logContext,\n track: pub.trackSid,\n });\n await track.restartTrack();\n }\n await this.publishOrRepublishTrack(track, pub.options, true);\n }),\n );\n resolve();\n } catch (error: any) {\n reject(error);\n } finally {\n this.republishPromise = undefined;\n }\n });\n\n await this.republishPromise;\n }\n\n /**\n * Publish a new data payload to the room. Data will be forwarded to each\n * participant in the room if the destination field in publishOptions is empty\n *\n * @param data Uint8Array of the payload. To send string data, use TextEncoder.encode\n * @param options optionally specify a `reliable`, `topic` and `destination`\n */\n async publishData(data: Uint8Array, options: DataPublishOptions = {}): Promise {\n const kind = options.reliable ? DataPacket_Kind.RELIABLE : DataPacket_Kind.LOSSY;\n const destinationIdentities = options.destinationIdentities;\n const topic = options.topic;\n\n const packet = new DataPacket({\n kind: kind,\n value: {\n case: 'user',\n value: new UserPacket({\n participantIdentity: this.identity,\n payload: data,\n destinationIdentities,\n topic,\n }),\n },\n });\n\n await this.engine.sendDataPacket(packet, kind);\n }\n\n /**\n * Publish SIP DTMF message to the room.\n *\n * @param code DTMF code\n * @param digit DTMF digit\n */\n async publishDtmf(code: number, digit: string): Promise {\n const packet = new DataPacket({\n kind: DataPacket_Kind.RELIABLE,\n value: {\n case: 'sipDtmf',\n value: new SipDTMF({\n code: code,\n digit: digit,\n }),\n },\n });\n\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n }\n\n async sendChatMessage(text: string): Promise {\n const msg = {\n id: crypto.randomUUID(),\n message: text,\n timestamp: Date.now(),\n } as const satisfies ChatMessage;\n const packet = new DataPacket({\n value: {\n case: 'chatMessage',\n value: new ChatMessageModel({\n ...msg,\n timestamp: protoInt64.parse(msg.timestamp),\n }),\n },\n });\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n this.emit(ParticipantEvent.ChatMessage, msg);\n return msg;\n }\n\n async editChatMessage(editText: string, originalMessage: ChatMessage) {\n const msg = {\n ...originalMessage,\n message: editText,\n editTimestamp: Date.now(),\n } as const satisfies ChatMessage;\n const packet = new DataPacket({\n value: {\n case: 'chatMessage',\n value: new ChatMessageModel({\n ...msg,\n timestamp: protoInt64.parse(msg.timestamp),\n editTimestamp: protoInt64.parse(msg.editTimestamp),\n }),\n },\n });\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n this.emit(ParticipantEvent.ChatMessage, msg);\n return msg;\n }\n\n /**\n * Initiate an RPC call to a remote participant\n * @param params - Parameters for initiating the RPC call, see {@link PerformRpcParams}\n * @returns A promise that resolves with the response payload or rejects with an error.\n * @throws Error on failure. Details in `message`.\n */\n async performRpc({\n destinationIdentity,\n method,\n payload,\n responseTimeout = 10000,\n }: PerformRpcParams): Promise {\n const maxRoundTripLatency = 2000;\n\n return new Promise(async (resolve, reject) => {\n if (byteLength(payload) > MAX_PAYLOAD_BYTES) {\n reject(RpcError.builtIn('REQUEST_PAYLOAD_TOO_LARGE'));\n return;\n }\n\n if (\n this.engine.latestJoinResponse?.serverInfo?.version &&\n compareVersions(this.engine.latestJoinResponse?.serverInfo?.version, '1.8.0') < 0\n ) {\n reject(RpcError.builtIn('UNSUPPORTED_SERVER'));\n return;\n }\n\n const id = crypto.randomUUID();\n await this.publishRpcRequest(\n destinationIdentity,\n id,\n method,\n payload,\n responseTimeout - maxRoundTripLatency,\n );\n\n const ackTimeoutId = setTimeout(() => {\n this.pendingAcks.delete(id);\n reject(RpcError.builtIn('CONNECTION_TIMEOUT'));\n this.pendingResponses.delete(id);\n clearTimeout(responseTimeoutId);\n }, maxRoundTripLatency);\n\n this.pendingAcks.set(id, {\n resolve: () => {\n clearTimeout(ackTimeoutId);\n },\n participantIdentity: destinationIdentity,\n });\n\n const responseTimeoutId = setTimeout(() => {\n this.pendingResponses.delete(id);\n reject(RpcError.builtIn('RESPONSE_TIMEOUT'));\n }, responseTimeout);\n\n this.pendingResponses.set(id, {\n resolve: (responsePayload: string | null, responseError: RpcError | null) => {\n clearTimeout(responseTimeoutId);\n if (this.pendingAcks.has(id)) {\n console.warn('RPC response received before ack', id);\n this.pendingAcks.delete(id);\n clearTimeout(ackTimeoutId);\n }\n\n if (responseError) {\n reject(responseError);\n } else {\n resolve(responsePayload ?? '');\n }\n },\n participantIdentity: destinationIdentity,\n });\n });\n }\n\n /**\n * Establishes the participant as a receiver for calls of the specified RPC method.\n * Will overwrite any existing callback for the same method.\n *\n * @param method - The name of the indicated RPC method\n * @param handler - Will be invoked when an RPC request for this method is received\n * @returns A promise that resolves when the method is successfully registered\n *\n * @example\n * ```typescript\n * room.localParticipant?.registerRpcMethod(\n * 'greet',\n * async (data: RpcInvocationData) => {\n * console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);\n * return `Hello, ${data.callerIdentity}!`;\n * }\n * );\n * ```\n *\n * The handler should return a Promise that resolves to a string.\n * If unable to respond within `responseTimeout`, the request will result in an error on the caller's side.\n *\n * You may throw errors of type `RpcError` with a string `message` in the handler,\n * and they will be received on the caller's side with the message intact.\n * Other errors thrown in your handler will not be transmitted as-is, and will instead arrive to the caller as `1500` (\"Application Error\").\n */\n registerRpcMethod(method: string, handler: (data: RpcInvocationData) => Promise) {\n this.rpcHandlers.set(method, handler);\n }\n\n /**\n * Unregisters a previously registered RPC method.\n *\n * @param method - The name of the RPC method to unregister\n */\n unregisterRpcMethod(method: string) {\n this.rpcHandlers.delete(method);\n }\n\n /**\n * Control who can subscribe to LocalParticipant's published tracks.\n *\n * By default, all participants can subscribe. This allows fine-grained control over\n * who is able to subscribe at a participant and track level.\n *\n * Note: if access is given at a track-level (i.e. both [allParticipantsAllowed] and\n * [ParticipantTrackPermission.allTracksAllowed] are false), any newer published tracks\n * will not grant permissions to any participants and will require a subsequent\n * permissions update to allow subscription.\n *\n * @param allParticipantsAllowed Allows all participants to subscribe all tracks.\n * Takes precedence over [[participantTrackPermissions]] if set to true.\n * By default this is set to true.\n * @param participantTrackPermissions Full list of individual permissions per\n * participant/track. Any omitted participants will not receive any permissions.\n */\n setTrackSubscriptionPermissions(\n allParticipantsAllowed: boolean,\n participantTrackPermissions: ParticipantTrackPermission[] = [],\n ) {\n this.participantTrackPermissions = participantTrackPermissions;\n this.allParticipantsAllowedToSubscribe = allParticipantsAllowed;\n if (!this.engine.client.isDisconnected) {\n this.updateTrackSubscriptionPermissions();\n }\n }\n\n private handleIncomingRpcAck(requestId: string) {\n const handler = this.pendingAcks.get(requestId);\n if (handler) {\n handler.resolve();\n this.pendingAcks.delete(requestId);\n } else {\n console.error('Ack received for unexpected RPC request', requestId);\n }\n }\n\n private handleIncomingRpcResponse(\n requestId: string,\n payload: string | null,\n error: RpcError | null,\n ) {\n const handler = this.pendingResponses.get(requestId);\n if (handler) {\n handler.resolve(payload, error);\n this.pendingResponses.delete(requestId);\n } else {\n console.error('Response received for unexpected RPC request', requestId);\n }\n }\n\n private async handleIncomingRpcRequest(\n callerIdentity: string,\n requestId: string,\n method: string,\n payload: string,\n responseTimeout: number,\n version: number,\n ) {\n await this.publishRpcAck(callerIdentity, requestId);\n\n if (version !== 1) {\n await this.publishRpcResponse(\n callerIdentity,\n requestId,\n null,\n RpcError.builtIn('UNSUPPORTED_VERSION'),\n );\n return;\n }\n\n const handler = this.rpcHandlers.get(method);\n\n if (!handler) {\n await this.publishRpcResponse(\n callerIdentity,\n requestId,\n null,\n RpcError.builtIn('UNSUPPORTED_METHOD'),\n );\n return;\n }\n\n let responseError: RpcError | null = null;\n let responsePayload: string | null = null;\n\n try {\n const response = await handler({\n requestId,\n callerIdentity,\n payload,\n responseTimeout,\n });\n if (byteLength(response) > MAX_PAYLOAD_BYTES) {\n responseError = RpcError.builtIn('RESPONSE_PAYLOAD_TOO_LARGE');\n console.warn(`RPC Response payload too large for ${method}`);\n } else {\n responsePayload = response;\n }\n } catch (error) {\n if (error instanceof RpcError) {\n responseError = error;\n } else {\n console.warn(\n `Uncaught error returned by RPC handler for ${method}. Returning APPLICATION_ERROR instead.`,\n error,\n );\n responseError = RpcError.builtIn('APPLICATION_ERROR');\n }\n }\n await this.publishRpcResponse(callerIdentity, requestId, responsePayload, responseError);\n }\n\n /** @internal */\n private async publishRpcRequest(\n destinationIdentity: string,\n requestId: string,\n method: string,\n payload: string,\n responseTimeout: number,\n ) {\n const packet = new DataPacket({\n destinationIdentities: [destinationIdentity],\n kind: DataPacket_Kind.RELIABLE,\n value: {\n case: 'rpcRequest',\n value: new RpcRequest({\n id: requestId,\n method,\n payload,\n responseTimeoutMs: responseTimeout,\n version: 1,\n }),\n },\n });\n\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n }\n\n /** @internal */\n private async publishRpcResponse(\n destinationIdentity: string,\n requestId: string,\n payload: string | null,\n error: RpcError | null,\n ) {\n const packet = new DataPacket({\n destinationIdentities: [destinationIdentity],\n kind: DataPacket_Kind.RELIABLE,\n value: {\n case: 'rpcResponse',\n value: new RpcResponse({\n requestId,\n value: error\n ? { case: 'error', value: error.toProto() }\n : { case: 'payload', value: payload ?? '' },\n }),\n },\n });\n\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n }\n\n /** @internal */\n private async publishRpcAck(destinationIdentity: string, requestId: string) {\n const packet = new DataPacket({\n destinationIdentities: [destinationIdentity],\n kind: DataPacket_Kind.RELIABLE,\n value: {\n case: 'rpcAck',\n value: new RpcAck({\n requestId,\n }),\n },\n });\n\n await this.engine.sendDataPacket(packet, DataPacket_Kind.RELIABLE);\n }\n\n /** @internal */\n handleParticipantDisconnected(participantIdentity: string) {\n for (const [id, { participantIdentity: pendingIdentity }] of this.pendingAcks) {\n if (pendingIdentity === participantIdentity) {\n this.pendingAcks.delete(id);\n }\n }\n\n for (const [id, { participantIdentity: pendingIdentity, resolve }] of this.pendingResponses) {\n if (pendingIdentity === participantIdentity) {\n resolve(null, RpcError.builtIn('RECIPIENT_DISCONNECTED'));\n this.pendingResponses.delete(id);\n }\n }\n }\n\n /** @internal */\n setEnabledPublishCodecs(codecs: Codec[]) {\n this.enabledPublishVideoCodecs = codecs.filter(\n (c) => c.mime.split('/')[0].toLowerCase() === 'video',\n );\n }\n\n /** @internal */\n updateInfo(info: ParticipantInfo): boolean {\n if (info.sid !== this.sid) {\n // drop updates that specify a wrong sid.\n // the sid for local participant is only explicitly set on join and full reconnect\n return false;\n }\n if (!super.updateInfo(info)) {\n return false;\n }\n\n // reconcile track mute status.\n // if server's track mute status doesn't match actual, we'll have to update\n // the server's copy\n info.tracks.forEach((ti) => {\n const pub = this.trackPublications.get(ti.sid);\n\n if (pub) {\n const mutedOnServer = pub.isMuted || (pub.track?.isUpstreamPaused ?? false);\n if (mutedOnServer !== ti.muted) {\n this.log.debug('updating server mute state after reconcile', {\n ...this.logContext,\n ...getLogContextFromTrack(pub),\n mutedOnServer,\n });\n this.engine.client.sendMuteTrack(ti.sid, mutedOnServer);\n }\n }\n });\n return true;\n }\n\n private updateTrackSubscriptionPermissions = () => {\n this.log.debug('updating track subscription permissions', {\n ...this.logContext,\n allParticipantsAllowed: this.allParticipantsAllowedToSubscribe,\n participantTrackPermissions: this.participantTrackPermissions,\n });\n this.engine.client.sendUpdateSubscriptionPermissions(\n this.allParticipantsAllowedToSubscribe,\n this.participantTrackPermissions.map((p) => trackPermissionToProto(p)),\n );\n };\n\n /** @internal */\n private onTrackUnmuted = (track: LocalTrack) => {\n this.onTrackMuted(track, track.isUpstreamPaused);\n };\n\n // when the local track changes in mute status, we'll notify server as such\n /** @internal */\n private onTrackMuted = (track: LocalTrack, muted?: boolean) => {\n if (muted === undefined) {\n muted = true;\n }\n\n if (!track.sid) {\n this.log.error('could not update mute status for unpublished track', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n return;\n }\n\n this.engine.updateMuteStatus(track.sid, muted);\n };\n\n private onTrackUpstreamPaused = (track: LocalTrack) => {\n this.log.debug('upstream paused', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n this.onTrackMuted(track, true);\n };\n\n private onTrackUpstreamResumed = (track: LocalTrack) => {\n this.log.debug('upstream resumed', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n this.onTrackMuted(track, track.isMuted);\n };\n\n private onTrackFeatureUpdate = (track: LocalAudioTrack) => {\n const pub = this.audioTrackPublications.get(track.sid!);\n if (!pub) {\n this.log.warn(\n `Could not update local audio track settings, missing publication for track ${track.sid}`,\n this.logContext,\n );\n return;\n }\n this.engine.client.sendUpdateLocalAudioTrack(pub.trackSid, pub.getTrackFeatures());\n };\n\n private handleSubscribedQualityUpdate = async (update: SubscribedQualityUpdate) => {\n if (!this.roomOptions?.dynacast) {\n return;\n }\n const pub = this.videoTrackPublications.get(update.trackSid);\n if (!pub) {\n this.log.warn('received subscribed quality update for unknown track', {\n ...this.logContext,\n trackSid: update.trackSid,\n });\n return;\n }\n if (update.subscribedCodecs.length > 0) {\n if (!pub.videoTrack) {\n return;\n }\n const newCodecs = await pub.videoTrack.setPublishingCodecs(update.subscribedCodecs);\n for await (const codec of newCodecs) {\n if (isBackupCodec(codec)) {\n this.log.debug(`publish ${codec} for ${pub.videoTrack.sid}`, {\n ...this.logContext,\n ...getLogContextFromTrack(pub),\n });\n await this.publishAdditionalCodecForTrack(pub.videoTrack, codec, pub.options);\n }\n }\n } else if (update.subscribedQualities.length > 0) {\n await pub.videoTrack?.setPublishingLayers(update.subscribedQualities);\n }\n };\n\n private handleLocalTrackUnpublished = (unpublished: TrackUnpublishedResponse) => {\n const track = this.trackPublications.get(unpublished.trackSid);\n if (!track) {\n this.log.warn('received unpublished event for unknown track', {\n ...this.logContext,\n trackSid: unpublished.trackSid,\n });\n return;\n }\n this.unpublishTrack(track.track!);\n };\n\n private handleTrackEnded = async (track: LocalTrack) => {\n if (\n track.source === Track.Source.ScreenShare ||\n track.source === Track.Source.ScreenShareAudio\n ) {\n this.log.debug('unpublishing local track due to TrackEnded', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n this.unpublishTrack(track);\n } else if (track.isUserProvided) {\n await track.mute();\n } else if (track instanceof LocalAudioTrack || track instanceof LocalVideoTrack) {\n try {\n if (isWeb()) {\n try {\n const currentPermissions = await navigator?.permissions.query({\n // the permission query for camera and microphone currently not supported in Safari and Firefox\n // @ts-ignore\n name: track.source === Track.Source.Camera ? 'camera' : 'microphone',\n });\n if (currentPermissions && currentPermissions.state === 'denied') {\n this.log.warn(`user has revoked access to ${track.source}`, {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n\n // detect granted change after permissions were denied to try and resume then\n currentPermissions.onchange = () => {\n if (currentPermissions.state !== 'denied') {\n if (!track.isMuted) {\n track.restartTrack();\n }\n currentPermissions.onchange = null;\n }\n };\n throw new Error('GetUserMedia Permission denied');\n }\n } catch (e: any) {\n // permissions query fails for firefox, we continue and try to restart the track\n }\n }\n if (!track.isMuted) {\n this.log.debug('track ended, attempting to use a different device', {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n if (track instanceof LocalAudioTrack) {\n // fall back to default device if available\n await track.restartTrack({ deviceId: 'default' });\n } else {\n await track.restartTrack();\n }\n }\n } catch (e) {\n this.log.warn(`could not restart track, muting instead`, {\n ...this.logContext,\n ...getLogContextFromTrack(track),\n });\n await track.mute();\n }\n }\n };\n\n private getPublicationForTrack(\n track: LocalTrack | MediaStreamTrack,\n ): LocalTrackPublication | undefined {\n let publication: LocalTrackPublication | undefined;\n this.trackPublications.forEach((pub) => {\n const localTrack = pub.track;\n if (!localTrack) {\n return;\n }\n\n // this looks overly complicated due to this object tree\n if (track instanceof MediaStreamTrack) {\n if (localTrack instanceof LocalAudioTrack || localTrack instanceof LocalVideoTrack) {\n if (localTrack.mediaStreamTrack === track) {\n publication = pub;\n }\n }\n } else if (track === localTrack) {\n publication = pub;\n }\n });\n return publication;\n }\n\n private async waitForPendingPublicationOfSource(source: Track.Source) {\n const waitForPendingTimeout = 10_000;\n const startTime = Date.now();\n\n while (Date.now() < startTime + waitForPendingTimeout) {\n const publishPromiseEntry = Array.from(this.pendingPublishPromises.entries()).find(\n ([pendingTrack]) => pendingTrack.source === source,\n );\n if (publishPromiseEntry) {\n return publishPromiseEntry[1];\n }\n await sleep(20);\n }\n }\n}\n","import { TrackPermission } from '@livekit/protocol';\n\nexport interface ParticipantTrackPermission {\n /**\n * The participant identity this permission applies to.\n * You can either provide this or `participantSid`\n */\n participantIdentity?: string;\n\n /**\n * The participant server id this permission applies to.\n * You can either provide this or `participantIdentity`\n */\n participantSid?: string;\n\n /**\n * Grant permission to all all tracks. Takes precedence over allowedTrackSids.\n * false if unset.\n */\n allowAll?: boolean;\n\n /**\n * The list of track ids that the target participant can subscribe to.\n * When unset, it'll allow all tracks to be subscribed by the participant.\n * When empty, this participant is disallowed from subscribing to any tracks.\n */\n allowedTrackSids?: string[];\n}\n\nexport function trackPermissionToProto(perms: ParticipantTrackPermission): TrackPermission {\n if (!perms.participantSid && !perms.participantIdentity) {\n throw new Error(\n 'Invalid track permission, must provide at least one of participantIdentity and participantSid',\n );\n }\n return new TrackPermission({\n participantIdentity: perms.participantIdentity ?? '',\n participantSid: perms.participantSid ?? '',\n allTracks: perms.allowAll ?? false,\n trackSids: perms.allowedTrackSids || [],\n });\n}\n","import {\n ParticipantTracks,\n SubscriptionError,\n TrackInfo,\n UpdateSubscription,\n UpdateTrackSettings,\n} from '@livekit/protocol';\nimport { TrackEvent } from '../events';\nimport type { LoggerOptions } from '../types';\nimport type RemoteTrack from './RemoteTrack';\nimport RemoteVideoTrack from './RemoteVideoTrack';\nimport { Track, VideoQuality } from './Track';\nimport { TrackPublication } from './TrackPublication';\n\nexport default class RemoteTrackPublication extends TrackPublication {\n track?: RemoteTrack = undefined;\n\n /** @internal */\n protected allowed = true;\n\n // keeps track of client's desire to subscribe to a track, also true if autoSubscribe is active\n protected subscribed?: boolean;\n\n protected disabled: boolean = false;\n\n protected currentVideoQuality?: VideoQuality = VideoQuality.HIGH;\n\n protected videoDimensions?: Track.Dimensions;\n\n protected fps?: number;\n\n protected subscriptionError?: SubscriptionError;\n\n constructor(\n kind: Track.Kind,\n ti: TrackInfo,\n autoSubscribe: boolean | undefined,\n loggerOptions?: LoggerOptions,\n ) {\n super(kind, ti.sid, ti.name, loggerOptions);\n this.subscribed = autoSubscribe;\n this.updateInfo(ti);\n }\n\n /**\n * Subscribe or unsubscribe to this remote track\n * @param subscribed true to subscribe to a track, false to unsubscribe\n */\n setSubscribed(subscribed: boolean) {\n const prevStatus = this.subscriptionStatus;\n const prevPermission = this.permissionStatus;\n this.subscribed = subscribed;\n // reset allowed status when desired subscription state changes\n // server will notify client via signal message if it's not allowed\n if (subscribed) {\n this.allowed = true;\n }\n\n const sub = new UpdateSubscription({\n trackSids: [this.trackSid],\n subscribe: this.subscribed,\n participantTracks: [\n new ParticipantTracks({\n // sending an empty participant id since TrackPublication doesn't keep it\n // this is filled in by the participant that receives this message\n participantSid: '',\n trackSids: [this.trackSid],\n }),\n ],\n });\n this.emit(TrackEvent.UpdateSubscription, sub);\n this.emitSubscriptionUpdateIfChanged(prevStatus);\n this.emitPermissionUpdateIfChanged(prevPermission);\n }\n\n get subscriptionStatus(): TrackPublication.SubscriptionStatus {\n if (this.subscribed === false) {\n return TrackPublication.SubscriptionStatus.Unsubscribed;\n }\n if (!super.isSubscribed) {\n return TrackPublication.SubscriptionStatus.Desired;\n }\n return TrackPublication.SubscriptionStatus.Subscribed;\n }\n\n get permissionStatus(): TrackPublication.PermissionStatus {\n return this.allowed\n ? TrackPublication.PermissionStatus.Allowed\n : TrackPublication.PermissionStatus.NotAllowed;\n }\n\n /**\n * Returns true if track is subscribed, and ready for playback\n */\n get isSubscribed(): boolean {\n if (this.subscribed === false) {\n return false;\n }\n return super.isSubscribed;\n }\n\n // returns client's desire to subscribe to a track, also true if autoSubscribe is enabled\n get isDesired(): boolean {\n return this.subscribed !== false;\n }\n\n get isEnabled(): boolean {\n return !this.disabled;\n }\n\n /**\n * disable server from sending down data for this track. this is useful when\n * the participant is off screen, you may disable streaming down their video\n * to reduce bandwidth requirements\n * @param enabled\n */\n setEnabled(enabled: boolean) {\n if (!this.isManualOperationAllowed() || this.disabled === !enabled) {\n return;\n }\n this.disabled = !enabled;\n\n this.emitTrackUpdate();\n }\n\n /**\n * for tracks that support simulcasting, adjust subscribed quality\n *\n * This indicates the highest quality the client can accept. if network\n * bandwidth does not allow, server will automatically reduce quality to\n * optimize for uninterrupted video\n */\n setVideoQuality(quality: VideoQuality) {\n if (!this.isManualOperationAllowed() || this.currentVideoQuality === quality) {\n return;\n }\n this.currentVideoQuality = quality;\n this.videoDimensions = undefined;\n\n this.emitTrackUpdate();\n }\n\n setVideoDimensions(dimensions: Track.Dimensions) {\n if (!this.isManualOperationAllowed()) {\n return;\n }\n if (\n this.videoDimensions?.width === dimensions.width &&\n this.videoDimensions?.height === dimensions.height\n ) {\n return;\n }\n if (this.track instanceof RemoteVideoTrack) {\n this.videoDimensions = dimensions;\n }\n this.currentVideoQuality = undefined;\n\n this.emitTrackUpdate();\n }\n\n setVideoFPS(fps: number) {\n if (!this.isManualOperationAllowed()) {\n return;\n }\n\n if (!(this.track instanceof RemoteVideoTrack)) {\n return;\n }\n\n if (this.fps === fps) {\n return;\n }\n\n this.fps = fps;\n this.emitTrackUpdate();\n }\n\n get videoQuality(): VideoQuality | undefined {\n return this.currentVideoQuality;\n }\n\n /** @internal */\n setTrack(track?: RemoteTrack) {\n const prevStatus = this.subscriptionStatus;\n const prevPermission = this.permissionStatus;\n const prevTrack = this.track;\n if (prevTrack === track) {\n return;\n }\n if (prevTrack) {\n // unregister listener\n prevTrack.off(TrackEvent.VideoDimensionsChanged, this.handleVideoDimensionsChange);\n prevTrack.off(TrackEvent.VisibilityChanged, this.handleVisibilityChange);\n prevTrack.off(TrackEvent.Ended, this.handleEnded);\n prevTrack.detach();\n prevTrack.stopMonitor();\n this.emit(TrackEvent.Unsubscribed, prevTrack);\n }\n super.setTrack(track);\n if (track) {\n track.sid = this.trackSid;\n track.on(TrackEvent.VideoDimensionsChanged, this.handleVideoDimensionsChange);\n track.on(TrackEvent.VisibilityChanged, this.handleVisibilityChange);\n track.on(TrackEvent.Ended, this.handleEnded);\n this.emit(TrackEvent.Subscribed, track);\n }\n this.emitPermissionUpdateIfChanged(prevPermission);\n this.emitSubscriptionUpdateIfChanged(prevStatus);\n }\n\n /** @internal */\n setAllowed(allowed: boolean) {\n const prevStatus = this.subscriptionStatus;\n const prevPermission = this.permissionStatus;\n this.allowed = allowed;\n this.emitPermissionUpdateIfChanged(prevPermission);\n this.emitSubscriptionUpdateIfChanged(prevStatus);\n }\n\n /** @internal */\n setSubscriptionError(error: SubscriptionError) {\n this.emit(TrackEvent.SubscriptionFailed, error);\n }\n\n /** @internal */\n updateInfo(info: TrackInfo) {\n super.updateInfo(info);\n const prevMetadataMuted = this.metadataMuted;\n this.metadataMuted = info.muted;\n if (this.track) {\n this.track.setMuted(info.muted);\n } else if (prevMetadataMuted !== info.muted) {\n this.emit(info.muted ? TrackEvent.Muted : TrackEvent.Unmuted);\n }\n }\n\n private emitSubscriptionUpdateIfChanged(previousStatus: TrackPublication.SubscriptionStatus) {\n const currentStatus = this.subscriptionStatus;\n if (previousStatus === currentStatus) {\n return;\n }\n this.emit(TrackEvent.SubscriptionStatusChanged, currentStatus, previousStatus);\n }\n\n private emitPermissionUpdateIfChanged(\n previousPermissionStatus: TrackPublication.PermissionStatus,\n ) {\n const currentPermissionStatus = this.permissionStatus;\n if (currentPermissionStatus !== previousPermissionStatus) {\n this.emit(\n TrackEvent.SubscriptionPermissionChanged,\n this.permissionStatus,\n previousPermissionStatus,\n );\n }\n }\n\n private isManualOperationAllowed(): boolean {\n if (this.kind === Track.Kind.Video && this.isAdaptiveStream) {\n this.log.warn(\n 'adaptive stream is enabled, cannot change video track settings',\n this.logContext,\n );\n return false;\n }\n if (!this.isDesired) {\n this.log.warn('cannot update track settings when not subscribed', this.logContext);\n return false;\n }\n return true;\n }\n\n protected handleEnded = (track: RemoteTrack) => {\n this.setTrack(undefined);\n this.emit(TrackEvent.Ended, track);\n };\n\n protected get isAdaptiveStream(): boolean {\n return this.track instanceof RemoteVideoTrack && this.track.isAdaptiveStream;\n }\n\n protected handleVisibilityChange = (visible: boolean) => {\n this.log.debug(\n `adaptivestream video visibility ${this.trackSid}, visible=${visible}`,\n this.logContext,\n );\n this.disabled = !visible;\n this.emitTrackUpdate();\n };\n\n protected handleVideoDimensionsChange = (dimensions: Track.Dimensions) => {\n this.log.debug(\n `adaptivestream video dimensions ${dimensions.width}x${dimensions.height}`,\n this.logContext,\n );\n this.videoDimensions = dimensions;\n this.emitTrackUpdate();\n };\n\n /* @internal */\n emitTrackUpdate() {\n const settings: UpdateTrackSettings = new UpdateTrackSettings({\n trackSids: [this.trackSid],\n disabled: this.disabled,\n fps: this.fps,\n });\n if (this.videoDimensions) {\n settings.width = Math.ceil(this.videoDimensions.width);\n settings.height = Math.ceil(this.videoDimensions.height);\n } else if (this.currentVideoQuality !== undefined) {\n settings.quality = this.currentVideoQuality;\n } else {\n // defaults to high quality\n settings.quality = VideoQuality.HIGH;\n }\n\n this.emit(TrackEvent.UpdateSettings, settings);\n }\n}\n","import type {\n ParticipantInfo,\n SubscriptionError,\n UpdateSubscription,\n UpdateTrackSettings,\n} from '@livekit/protocol';\nimport type { SignalClient } from '../../api/SignalClient';\nimport { ParticipantEvent, TrackEvent } from '../events';\nimport RemoteAudioTrack from '../track/RemoteAudioTrack';\nimport type RemoteTrack from '../track/RemoteTrack';\nimport RemoteTrackPublication from '../track/RemoteTrackPublication';\nimport RemoteVideoTrack from '../track/RemoteVideoTrack';\nimport { Track } from '../track/Track';\nimport type { TrackPublication } from '../track/TrackPublication';\nimport type { AudioOutputOptions } from '../track/options';\nimport type { AdaptiveStreamSettings } from '../track/types';\nimport { getLogContextFromTrack } from '../track/utils';\nimport type { LoggerOptions } from '../types';\nimport Participant, { ParticipantKind } from './Participant';\nimport type { ParticipantEventCallbacks } from './Participant';\n\nexport default class RemoteParticipant extends Participant {\n audioTrackPublications: Map;\n\n videoTrackPublications: Map;\n\n trackPublications: Map;\n\n signalClient: SignalClient;\n\n private volumeMap: Map;\n\n private audioOutput?: AudioOutputOptions;\n\n /** @internal */\n static fromParticipantInfo(\n signalClient: SignalClient,\n pi: ParticipantInfo,\n loggerOptions: LoggerOptions,\n ): RemoteParticipant {\n return new RemoteParticipant(\n signalClient,\n pi.sid,\n pi.identity,\n pi.name,\n pi.metadata,\n pi.attributes,\n loggerOptions,\n pi.kind,\n );\n }\n\n protected get logContext() {\n return {\n ...super.logContext,\n rpID: this.sid,\n remoteParticipant: this.identity,\n };\n }\n\n /** @internal */\n constructor(\n signalClient: SignalClient,\n sid: string,\n identity?: string,\n name?: string,\n metadata?: string,\n attributes?: Record,\n loggerOptions?: LoggerOptions,\n kind: ParticipantKind = ParticipantKind.STANDARD,\n ) {\n super(sid, identity || '', name, metadata, attributes, loggerOptions, kind);\n this.signalClient = signalClient;\n this.trackPublications = new Map();\n this.audioTrackPublications = new Map();\n this.videoTrackPublications = new Map();\n this.volumeMap = new Map();\n }\n\n protected addTrackPublication(publication: RemoteTrackPublication) {\n super.addTrackPublication(publication);\n\n // register action events\n publication.on(TrackEvent.UpdateSettings, (settings: UpdateTrackSettings) => {\n this.log.debug('send update settings', {\n ...this.logContext,\n ...getLogContextFromTrack(publication),\n });\n this.signalClient.sendUpdateTrackSettings(settings);\n });\n publication.on(TrackEvent.UpdateSubscription, (sub: UpdateSubscription) => {\n sub.participantTracks.forEach((pt) => {\n pt.participantSid = this.sid;\n });\n this.signalClient.sendUpdateSubscription(sub);\n });\n publication.on(\n TrackEvent.SubscriptionPermissionChanged,\n (status: TrackPublication.PermissionStatus) => {\n this.emit(ParticipantEvent.TrackSubscriptionPermissionChanged, publication, status);\n },\n );\n publication.on(\n TrackEvent.SubscriptionStatusChanged,\n (status: TrackPublication.SubscriptionStatus) => {\n this.emit(ParticipantEvent.TrackSubscriptionStatusChanged, publication, status);\n },\n );\n publication.on(TrackEvent.Subscribed, (track: RemoteTrack) => {\n this.emit(ParticipantEvent.TrackSubscribed, track, publication);\n });\n publication.on(TrackEvent.Unsubscribed, (previousTrack: RemoteTrack) => {\n this.emit(ParticipantEvent.TrackUnsubscribed, previousTrack, publication);\n });\n publication.on(TrackEvent.SubscriptionFailed, (error: SubscriptionError) => {\n this.emit(ParticipantEvent.TrackSubscriptionFailed, publication.trackSid, error);\n });\n }\n\n getTrackPublication(source: Track.Source): RemoteTrackPublication | undefined {\n const track = super.getTrackPublication(source);\n if (track) {\n return track as RemoteTrackPublication;\n }\n }\n\n getTrackPublicationByName(name: string): RemoteTrackPublication | undefined {\n const track = super.getTrackPublicationByName(name);\n if (track) {\n return track as RemoteTrackPublication;\n }\n }\n\n /**\n * sets the volume on the participant's audio track\n * by default, this affects the microphone publication\n * a different source can be passed in as a second argument\n * if no track exists the volume will be applied when the microphone track is added\n */\n setVolume(\n volume: number,\n source: Track.Source.Microphone | Track.Source.ScreenShareAudio = Track.Source.Microphone,\n ) {\n this.volumeMap.set(source, volume);\n const audioPublication = this.getTrackPublication(source);\n if (audioPublication && audioPublication.track) {\n (audioPublication.track as RemoteAudioTrack).setVolume(volume);\n }\n }\n\n /**\n * gets the volume on the participant's microphone track\n */\n getVolume(\n source: Track.Source.Microphone | Track.Source.ScreenShareAudio = Track.Source.Microphone,\n ) {\n const audioPublication = this.getTrackPublication(source);\n if (audioPublication && audioPublication.track) {\n return (audioPublication.track as RemoteAudioTrack).getVolume();\n }\n return this.volumeMap.get(source);\n }\n\n /** @internal */\n addSubscribedMediaTrack(\n mediaTrack: MediaStreamTrack,\n sid: Track.SID,\n mediaStream: MediaStream,\n receiver: RTCRtpReceiver,\n adaptiveStreamSettings?: AdaptiveStreamSettings,\n triesLeft?: number,\n ) {\n // find the track publication\n // it's possible for the media track to arrive before participant info\n let publication = this.getTrackPublicationBySid(sid);\n\n // it's also possible that the browser didn't honor our original track id\n // FireFox would use its own local uuid instead of server track id\n if (!publication) {\n if (!sid.startsWith('TR')) {\n // find the first track that matches type\n this.trackPublications.forEach((p) => {\n if (!publication && mediaTrack.kind === p.kind.toString()) {\n publication = p;\n }\n });\n }\n }\n\n // when we couldn't locate the track, it's possible that the metadata hasn't\n // yet arrived. Wait a bit longer for it to arrive, or fire an error\n if (!publication) {\n if (triesLeft === 0) {\n this.log.error('could not find published track', {\n ...this.logContext,\n trackSid: sid,\n });\n this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);\n return;\n }\n\n if (triesLeft === undefined) triesLeft = 20;\n setTimeout(() => {\n this.addSubscribedMediaTrack(\n mediaTrack,\n sid,\n mediaStream,\n receiver,\n adaptiveStreamSettings,\n triesLeft! - 1,\n );\n }, 150);\n return;\n }\n\n if (mediaTrack.readyState === 'ended') {\n this.log.error(\n 'unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()',\n { ...this.logContext, ...getLogContextFromTrack(publication) },\n );\n this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);\n return;\n }\n\n const isVideo = mediaTrack.kind === 'video';\n let track: RemoteTrack;\n if (isVideo) {\n track = new RemoteVideoTrack(mediaTrack, sid, receiver, adaptiveStreamSettings);\n } else {\n track = new RemoteAudioTrack(mediaTrack, sid, receiver, this.audioContext, this.audioOutput);\n }\n\n // set track info\n track.source = publication.source;\n // keep publication's muted status\n track.isMuted = publication.isMuted;\n track.setMediaStream(mediaStream);\n track.start();\n\n publication.setTrack(track);\n // set participant volumes on new audio tracks\n if (this.volumeMap.has(publication.source) && track instanceof RemoteAudioTrack) {\n track.setVolume(this.volumeMap.get(publication.source)!);\n }\n\n return publication;\n }\n\n /** @internal */\n get hasMetadata(): boolean {\n return !!this.participantInfo;\n }\n\n /**\n * @internal\n */\n getTrackPublicationBySid(sid: Track.SID): RemoteTrackPublication | undefined {\n return this.trackPublications.get(sid);\n }\n\n /** @internal */\n updateInfo(info: ParticipantInfo): boolean {\n if (!super.updateInfo(info)) {\n return false;\n }\n\n // we are getting a list of all available tracks, reconcile in here\n // and send out events for changes\n\n // reconcile track publications, publish events only if metadata is already there\n // i.e. changes since the local participant has joined\n const validTracks = new Map();\n const newTracks = new Map();\n\n info.tracks.forEach((ti) => {\n let publication = this.getTrackPublicationBySid(ti.sid);\n if (!publication) {\n // new publication\n const kind = Track.kindFromProto(ti.type);\n if (!kind) {\n return;\n }\n publication = new RemoteTrackPublication(\n kind,\n ti,\n this.signalClient.connectOptions?.autoSubscribe,\n { loggerContextCb: () => this.logContext, loggerName: this.loggerOptions?.loggerName },\n );\n publication.updateInfo(ti);\n newTracks.set(ti.sid, publication);\n const existingTrackOfSource = Array.from(this.trackPublications.values()).find(\n (publishedTrack) => publishedTrack.source === publication?.source,\n );\n if (existingTrackOfSource && publication.source !== Track.Source.Unknown) {\n this.log.debug(\n `received a second track publication for ${this.identity} with the same source: ${publication.source}`,\n {\n ...this.logContext,\n oldTrack: getLogContextFromTrack(existingTrackOfSource),\n newTrack: getLogContextFromTrack(publication),\n },\n );\n }\n this.addTrackPublication(publication);\n } else {\n publication.updateInfo(ti);\n }\n validTracks.set(ti.sid, publication);\n });\n\n // detect removed tracks\n this.trackPublications.forEach((publication) => {\n if (!validTracks.has(publication.trackSid)) {\n this.log.trace('detected removed track on remote participant, unpublishing', {\n ...this.logContext,\n ...getLogContextFromTrack(publication),\n });\n this.unpublishTrack(publication.trackSid, true);\n }\n });\n\n // always emit events for new publications, Room will not forward them unless it's ready\n newTracks.forEach((publication) => {\n this.emit(ParticipantEvent.TrackPublished, publication);\n });\n return true;\n }\n\n /** @internal */\n unpublishTrack(sid: Track.SID, sendUnpublish?: boolean) {\n const publication = this.trackPublications.get(sid);\n if (!publication) {\n return;\n }\n\n // also send unsubscribe, if track is actively subscribed\n const { track } = publication;\n if (track) {\n track.stop();\n publication.setTrack(undefined);\n }\n\n // remove track from maps only after unsubscribed has been fired\n this.trackPublications.delete(sid);\n\n // remove from the right type map\n switch (publication.kind) {\n case Track.Kind.Audio:\n this.audioTrackPublications.delete(sid);\n break;\n case Track.Kind.Video:\n this.videoTrackPublications.delete(sid);\n break;\n default:\n break;\n }\n\n if (sendUnpublish) {\n this.emit(ParticipantEvent.TrackUnpublished, publication);\n }\n }\n\n /**\n * @internal\n */\n async setAudioOutput(output: AudioOutputOptions) {\n this.audioOutput = output;\n const promises: Promise[] = [];\n this.audioTrackPublications.forEach((pub) => {\n if (pub.track instanceof RemoteAudioTrack) {\n promises.push(pub.track.setSinkId(output.deviceId ?? 'default'));\n }\n });\n await Promise.all(promises);\n }\n\n /** @internal */\n emit(\n event: E,\n ...args: Parameters\n ): boolean {\n this.log.trace('participant event', { ...this.logContext, event, args });\n return super.emit(event, ...args);\n }\n}\n","import { EventEmitter } from 'events';\nimport type TypedEmitter from 'typed-emitter';\nimport type { RoomConnectOptions, RoomOptions } from '../../options';\nimport type RTCEngine from '../../room/RTCEngine';\nimport Room, { ConnectionState } from '../../room/Room';\n\ntype LogMessage = {\n level: 'info' | 'warning' | 'error';\n message: string;\n};\n\nexport enum CheckStatus {\n IDLE,\n RUNNING,\n SKIPPED,\n SUCCESS,\n FAILED,\n}\n\nexport type CheckInfo = {\n name: string;\n logs: Array;\n status: CheckStatus;\n description: string;\n};\n\nexport interface CheckerOptions {\n errorsAsWarnings?: boolean;\n roomOptions?: RoomOptions;\n connectOptions?: RoomConnectOptions;\n}\n\nexport abstract class Checker extends (EventEmitter as new () => TypedEmitter) {\n protected url: string;\n\n protected token: string;\n\n room: Room;\n\n connectOptions?: RoomConnectOptions;\n\n status: CheckStatus = CheckStatus.IDLE;\n\n logs: Array = [];\n\n errorsAsWarnings: boolean = false;\n\n name: string;\n\n constructor(url: string, token: string, options: CheckerOptions = {}) {\n super();\n this.url = url;\n this.token = token;\n this.name = this.constructor.name;\n this.room = new Room(options.roomOptions);\n this.connectOptions = options.connectOptions;\n if (options.errorsAsWarnings) {\n this.errorsAsWarnings = options.errorsAsWarnings;\n }\n }\n\n abstract get description(): string;\n\n protected abstract perform(): Promise;\n\n async run(onComplete?: () => void) {\n if (this.status !== CheckStatus.IDLE) {\n throw Error('check is running already');\n }\n this.setStatus(CheckStatus.RUNNING);\n\n try {\n await this.perform();\n } catch (err) {\n if (err instanceof Error) {\n if (this.errorsAsWarnings) {\n this.appendWarning(err.message);\n } else {\n this.appendError(err.message);\n }\n }\n }\n\n await this.disconnect();\n\n // sleep for a bit to ensure disconnect\n await new Promise((resolve) => setTimeout(resolve, 500));\n\n // @ts-ignore\n if (this.status !== CheckStatus.SKIPPED) {\n this.setStatus(this.isSuccess() ? CheckStatus.SUCCESS : CheckStatus.FAILED);\n }\n\n if (onComplete) {\n onComplete();\n }\n return this.getInfo();\n }\n\n protected isSuccess(): boolean {\n return !this.logs.some((l) => l.level === 'error');\n }\n\n protected async connect(): Promise {\n if (this.room.state === ConnectionState.Connected) {\n return this.room;\n }\n await this.room.connect(this.url, this.token, this.connectOptions);\n return this.room;\n }\n\n protected async disconnect() {\n if (this.room && this.room.state !== ConnectionState.Disconnected) {\n await this.room.disconnect();\n // wait for it to go through\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n\n protected skip() {\n this.setStatus(CheckStatus.SKIPPED);\n }\n\n protected appendMessage(message: string) {\n this.logs.push({ level: 'info', message });\n this.emit('update', this.getInfo());\n }\n\n protected appendWarning(message: string) {\n this.logs.push({ level: 'warning', message });\n this.emit('update', this.getInfo());\n }\n\n protected appendError(message: string) {\n this.logs.push({ level: 'error', message });\n this.emit('update', this.getInfo());\n }\n\n protected setStatus(status: CheckStatus) {\n this.status = status;\n this.emit('update', this.getInfo());\n }\n\n protected get engine(): RTCEngine | undefined {\n return this.room?.engine;\n }\n\n getInfo(): CheckInfo {\n return {\n logs: this.logs,\n name: this.name,\n status: this.status,\n description: this.description,\n };\n }\n}\nexport type InstantiableCheck = {\n new (url: string, token: string, options?: CheckerOptions): T;\n};\n\ntype CheckerCallbacks = {\n update: (info: CheckInfo) => void;\n};\n","import { EventEmitter } from 'events';\nimport type TypedEmitter from 'typed-emitter';\nimport type { CheckInfo, CheckerOptions, InstantiableCheck } from './checks/Checker';\nimport { CheckStatus, Checker } from './checks/Checker';\nimport { PublishAudioCheck } from './checks/publishAudio';\nimport { PublishVideoCheck } from './checks/publishVideo';\nimport { ReconnectCheck } from './checks/reconnect';\nimport { TURNCheck } from './checks/turn';\nimport { WebRTCCheck } from './checks/webrtc';\nimport { WebSocketCheck } from './checks/websocket';\n\nexport type { CheckInfo, CheckStatus };\n\nexport class ConnectionCheck extends (EventEmitter as new () => TypedEmitter) {\n token: string;\n\n url: string;\n\n options: CheckerOptions = {};\n\n private checkResults: Map = new Map();\n\n constructor(url: string, token: string, options: CheckerOptions = {}) {\n super();\n this.url = url;\n this.token = token;\n this.options = options;\n }\n\n private getNextCheckId() {\n const nextId = this.checkResults.size;\n this.checkResults.set(nextId, {\n logs: [],\n status: CheckStatus.IDLE,\n name: '',\n description: '',\n });\n return nextId;\n }\n\n private updateCheck(checkId: number, info: CheckInfo) {\n this.checkResults.set(checkId, info);\n this.emit('checkUpdate', checkId, info);\n }\n\n isSuccess() {\n return Array.from(this.checkResults.values()).every((r) => r.status !== CheckStatus.FAILED);\n }\n\n getResults() {\n return Array.from(this.checkResults.values());\n }\n\n async createAndRunCheck(check: InstantiableCheck) {\n const checkId = this.getNextCheckId();\n const test = new check(this.url, this.token, this.options);\n const handleUpdate = (info: CheckInfo) => {\n this.updateCheck(checkId, info);\n };\n test.on('update', handleUpdate);\n const result = await test.run();\n test.off('update', handleUpdate);\n return result;\n }\n\n async checkWebsocket() {\n return this.createAndRunCheck(WebSocketCheck);\n }\n\n async checkWebRTC() {\n return this.createAndRunCheck(WebRTCCheck);\n }\n\n async checkTURN() {\n return this.createAndRunCheck(TURNCheck);\n }\n\n async checkReconnect() {\n return this.createAndRunCheck(ReconnectCheck);\n }\n\n async checkPublishAudio() {\n return this.createAndRunCheck(PublishAudioCheck);\n }\n\n async checkPublishVideo() {\n return this.createAndRunCheck(PublishVideoCheck);\n }\n}\n\ntype ConnectionCheckCallbacks = {\n checkUpdate: (id: number, info: CheckInfo) => void;\n};\n","import log from '../../logger';\nimport LocalTrack from './LocalTrack';\nimport type { VideoCaptureOptions } from './options';\n\ntype FacingMode = NonNullable;\ntype FacingModeFromLocalTrackOptions = {\n /**\n * If no facing mode can be determined, this value will be used.\n * @defaultValue 'user'\n */\n defaultFacingMode?: FacingMode;\n};\ntype FacingModeFromLocalTrackReturnValue = {\n /**\n * The (probable) facingMode of the track.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}\n */\n facingMode: FacingMode;\n /**\n * The confidence that the returned facingMode is correct.\n */\n confidence: 'high' | 'medium' | 'low';\n};\n\n/**\n * Try to analyze the local track to determine the facing mode of a track.\n *\n * @remarks\n * There is no property supported by all browsers to detect whether a video track originated from a user- or environment-facing camera device.\n * For this reason, we use the `facingMode` property when available, but will fall back on a string-based analysis of the device label to determine the facing mode.\n * If both methods fail, the default facing mode will be used.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode | MDN docs on facingMode}\n * @experimental\n */\nexport function facingModeFromLocalTrack(\n localTrack: LocalTrack | MediaStreamTrack,\n options: FacingModeFromLocalTrackOptions = {},\n): FacingModeFromLocalTrackReturnValue {\n const track = localTrack instanceof LocalTrack ? localTrack.mediaStreamTrack : localTrack;\n const trackSettings = track.getSettings();\n let result: FacingModeFromLocalTrackReturnValue = {\n facingMode: options.defaultFacingMode ?? 'user',\n confidence: 'low',\n };\n\n // 1. Try to get facingMode from track settings.\n if ('facingMode' in trackSettings) {\n const rawFacingMode = trackSettings.facingMode;\n log.trace('rawFacingMode', { rawFacingMode });\n if (rawFacingMode && typeof rawFacingMode === 'string' && isFacingModeValue(rawFacingMode)) {\n result = { facingMode: rawFacingMode, confidence: 'high' };\n }\n }\n\n // 2. If we don't have a high confidence we try to get the facing mode from the device label.\n if (['low', 'medium'].includes(result.confidence)) {\n log.trace(`Try to get facing mode from device label: (${track.label})`);\n const labelAnalysisResult = facingModeFromDeviceLabel(track.label);\n if (labelAnalysisResult !== undefined) {\n result = labelAnalysisResult;\n }\n }\n\n return result;\n}\n\nconst knownDeviceLabels = new Map([\n ['obs virtual camera', { facingMode: 'environment', confidence: 'medium' }],\n]);\nconst knownDeviceLabelSections = new Map([\n ['iphone', { facingMode: 'environment', confidence: 'medium' }],\n ['ipad', { facingMode: 'environment', confidence: 'medium' }],\n]);\n/**\n * Attempt to analyze the device label to determine the facing mode.\n *\n * @experimental\n */\nexport function facingModeFromDeviceLabel(\n deviceLabel: string,\n): FacingModeFromLocalTrackReturnValue | undefined {\n const label = deviceLabel.trim().toLowerCase();\n // Empty string is a valid device label but we can't infer anything from it.\n if (label === '') {\n return undefined;\n }\n\n // Can we match against widely known device labels.\n if (knownDeviceLabels.has(label)) {\n return knownDeviceLabels.get(label);\n }\n\n // Can we match against sections of the device label.\n return Array.from(knownDeviceLabelSections.entries()).find(([section]) =>\n label.includes(section),\n )?.[1];\n}\n\nfunction isFacingModeValue(item: string): item is FacingMode {\n const allowedValues: FacingMode[] = ['user', 'environment', 'left', 'right'];\n return item === undefined || allowedValues.includes(item as FacingMode);\n}\n","import { Room, VideoPresets, RoomEvent } from 'livekit-client';\nimport protobuf from 'protobufjs';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction sleep(ms) {\n return new Promise(function (resolve) { return setTimeout(resolve, ms); });\n}\nfunction convertFloat32ToS16PCM(float32Array) {\n var int16Array = new Int16Array(float32Array.length);\n for (var i = 0; i < float32Array.length; i++) {\n var clampedValue = Math.max(-1, Math.min(1, float32Array[i]));\n int16Array[i] = clampedValue < 0 ? clampedValue * 32768 : clampedValue * 32767;\n }\n return int16Array;\n}\n\nvar options = {\n\tsyntax: \"proto3\"\n};\nvar nested = {\n\tpipecat: {\n\t\tnested: {\n\t\t\tTextFrame: {\n\t\t\t\tfields: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tAudioRawFrame: {\n\t\t\t\tfields: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\taudio: {\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tsampleRate: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\tnumChannels: {\n\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tTranscriptionFrame: {\n\t\t\t\tfields: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"uint64\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t},\n\t\t\t\t\tuserId: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 4\n\t\t\t\t\t},\n\t\t\t\t\ttimestamp: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tid: 5\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tFrame: {\n\t\t\t\toneofs: {\n\t\t\t\t\tframe: {\n\t\t\t\t\t\toneof: [\n\t\t\t\t\t\t\t\"text\",\n\t\t\t\t\t\t\t\"audio\",\n\t\t\t\t\t\t\t\"transcription\"\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfields: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"TextFrame\",\n\t\t\t\t\t\tid: 1\n\t\t\t\t\t},\n\t\t\t\t\taudio: {\n\t\t\t\t\t\ttype: \"AudioRawFrame\",\n\t\t\t\t\t\tid: 2\n\t\t\t\t\t},\n\t\t\t\t\ttranscription: {\n\t\t\t\t\t\ttype: \"TranscriptionFrame\",\n\t\t\t\t\t\tid: 3\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar jsonDescriptor = {\n\toptions: options,\n\tnested: nested\n};\n\nvar AvatarQuality;\n(function (AvatarQuality) {\n AvatarQuality[\"Low\"] = \"low\";\n AvatarQuality[\"Medium\"] = \"medium\";\n AvatarQuality[\"High\"] = \"high\";\n})(AvatarQuality || (AvatarQuality = {}));\nvar VoiceEmotion;\n(function (VoiceEmotion) {\n VoiceEmotion[\"EXCITED\"] = \"excited\";\n VoiceEmotion[\"SERIOUS\"] = \"serious\";\n VoiceEmotion[\"FRIENDLY\"] = \"friendly\";\n VoiceEmotion[\"SOOTHING\"] = \"soothing\";\n VoiceEmotion[\"BROADCASTER\"] = \"broadcaster\";\n})(VoiceEmotion || (VoiceEmotion = {}));\nvar TaskType;\n(function (TaskType) {\n TaskType[\"TALK\"] = \"talk\";\n TaskType[\"REPEAT\"] = \"repeat\";\n})(TaskType || (TaskType = {}));\nvar TaskMode;\n(function (TaskMode) {\n TaskMode[\"SYNC\"] = \"sync\";\n TaskMode[\"ASYNC\"] = \"async\";\n})(TaskMode || (TaskMode = {}));\n// event types --------------------------------\nvar StreamingEvents;\n(function (StreamingEvents) {\n StreamingEvents[\"AVATAR_START_TALKING\"] = \"avatar_start_talking\";\n StreamingEvents[\"AVATAR_STOP_TALKING\"] = \"avatar_stop_talking\";\n StreamingEvents[\"AVATAR_TALKING_MESSAGE\"] = \"avatar_talking_message\";\n StreamingEvents[\"AVATAR_END_MESSAGE\"] = \"avatar_end_message\";\n StreamingEvents[\"USER_TALKING_MESSAGE\"] = \"user_talking_message\";\n StreamingEvents[\"USER_END_MESSAGE\"] = \"user_end_message\";\n StreamingEvents[\"USER_START\"] = \"user_start\";\n StreamingEvents[\"USER_STOP\"] = \"user_stop\";\n StreamingEvents[\"USER_SILENCE\"] = \"user_silence\";\n StreamingEvents[\"STREAM_READY\"] = \"stream_ready\";\n StreamingEvents[\"STREAM_DISCONNECTED\"] = \"stream_disconnected\";\n})(StreamingEvents || (StreamingEvents = {}));\nvar APIError = /** @class */ (function (_super) {\n __extends(APIError, _super);\n function APIError(message, status, responseText) {\n var _this = _super.call(this, message) || this;\n _this.name = 'APIError';\n _this.status = status;\n _this.responseText = responseText;\n return _this;\n }\n return APIError;\n}(Error));\nvar StreamingAvatar = /** @class */ (function () {\n function StreamingAvatar(_a) {\n var token = _a.token, _b = _a.basePath, basePath = _b === void 0 ? \"https://api.heygen.com\" : _b;\n this.room = null;\n this.mediaStream = null;\n this.eventTarget = new EventTarget();\n this.audioContext = null;\n this.webSocket = null;\n this.scriptProcessor = null;\n this.mediaStreamAudioSource = null;\n this.mediaDevicesStream = null;\n this.sessionId = null;\n this.token = token;\n this.basePath = basePath;\n }\n StreamingAvatar.prototype.createStartAvatar = function (requestData) {\n return __awaiter(this, void 0, void 0, function () {\n var sessionInfo, room, mediaStream;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.newSession(requestData)];\n case 1:\n sessionInfo = _a.sent();\n this.sessionId = sessionInfo.session_id;\n this.language = requestData.language;\n room = new Room({\n adaptiveStream: true,\n dynacast: true,\n videoCaptureDefaults: {\n resolution: VideoPresets.h720.resolution,\n },\n });\n this.room = room;\n this.mediaStream = null;\n room.on(RoomEvent.DataReceived, function (roomMessage) {\n var eventMsg = null;\n try {\n var messageString = new TextDecoder().decode(roomMessage);\n eventMsg = JSON.parse(messageString);\n }\n catch (e) {\n console.error(e);\n }\n if (!eventMsg) {\n return;\n }\n _this.emit(eventMsg.type, eventMsg);\n });\n mediaStream = new MediaStream();\n room.on(RoomEvent.TrackSubscribed, function (track) {\n if (track.kind === \"video\" || track.kind === \"audio\") {\n mediaStream.addTrack(track.mediaStreamTrack);\n var hasVideoTrack = mediaStream.getVideoTracks().length > 0;\n var hasAudioTrack = mediaStream.getAudioTracks().length > 0;\n if (hasVideoTrack &&\n hasAudioTrack &&\n !_this.mediaStream) {\n _this.mediaStream = mediaStream;\n _this.emit(StreamingEvents.STREAM_READY, _this.mediaStream);\n }\n }\n });\n room.on(RoomEvent.TrackUnsubscribed, function (track) {\n var mediaTrack = track.mediaStreamTrack;\n if (mediaTrack) {\n mediaStream.removeTrack(mediaTrack);\n }\n });\n room.on(RoomEvent.Disconnected, function (reason) {\n _this.emit(StreamingEvents.STREAM_DISCONNECTED, reason);\n });\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, room.prepareConnection(sessionInfo.url, sessionInfo.access_token)];\n case 3:\n _a.sent();\n return [3 /*break*/, 5];\n case 4:\n _a.sent();\n return [3 /*break*/, 5];\n case 5: return [4 /*yield*/, this.startSession()];\n case 6:\n _a.sent();\n return [4 /*yield*/, room.connect(sessionInfo.url, sessionInfo.access_token)];\n case 7:\n _a.sent();\n return [2 /*return*/, sessionInfo];\n }\n });\n });\n };\n StreamingAvatar.prototype.startVoiceChat = function () {\n return __awaiter(this, arguments, void 0, function (requestData) {\n var devicesStream, e_1;\n var _this = this;\n var _a, _b, _c;\n if (requestData === void 0) { requestData = {}; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n requestData.useSilencePrompt = requestData.useSilencePrompt || false;\n if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {\n return [2 /*return*/];\n }\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, , 7]);\n return [4 /*yield*/, this.loadAudioRawFrame()];\n case 2:\n _d.sent();\n return [4 /*yield*/, this.connectWebSocket({ useSilencePrompt: requestData.useSilencePrompt })];\n case 3:\n _d.sent();\n this.audioContext = new window.AudioContext({\n latencyHint: 'interactive',\n sampleRate: 16000,\n });\n return [4 /*yield*/, navigator.mediaDevices.getUserMedia({\n audio: {\n sampleRate: 16000,\n channelCount: 1,\n autoGainControl: true,\n echoCancellation: true,\n noiseSuppression: true,\n },\n })];\n case 4:\n devicesStream = _d.sent();\n this.mediaDevicesStream = devicesStream;\n this.mediaStreamAudioSource = (_a = this.audioContext) === null || _a === void 0 ? void 0 : _a.createMediaStreamSource(devicesStream);\n this.scriptProcessor = (_b = this.audioContext) === null || _b === void 0 ? void 0 : _b.createScriptProcessor(512, 1, 1);\n this.mediaStreamAudioSource.connect(this.scriptProcessor);\n this.scriptProcessor.connect((_c = this.audioContext) === null || _c === void 0 ? void 0 : _c.destination);\n this.scriptProcessor.onaudioprocess = function (event) {\n var _a, _b, _c;\n if (!_this.webSocket) {\n return;\n }\n var audioData = event.inputBuffer.getChannelData(0);\n var pcmS16Array = convertFloat32ToS16PCM(audioData);\n var pcmByteArray = new Uint8Array(pcmS16Array.buffer);\n var frame = (_a = _this.audioRawFrame) === null || _a === void 0 ? void 0 : _a.create({\n audio: {\n audio: Array.from(pcmByteArray),\n sampleRate: 16000,\n numChannels: 1,\n },\n });\n var encodedFrame = new Uint8Array((_b = _this.audioRawFrame) === null || _b === void 0 ? void 0 : _b.encode(frame).finish());\n (_c = _this.webSocket) === null || _c === void 0 ? void 0 : _c.send(encodedFrame);\n };\n // though room has been connected, but the stream may not be ready.\n return [4 /*yield*/, sleep(2000)];\n case 5:\n // though room has been connected, but the stream may not be ready.\n _d.sent();\n return [3 /*break*/, 7];\n case 6:\n e_1 = _d.sent();\n console.error(e_1);\n throw e_1;\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n StreamingAvatar.prototype.closeVoiceChat = function () {\n var _a, _b;\n try {\n if (this.audioContext) {\n this.audioContext = null;\n }\n if (this.scriptProcessor) {\n this.scriptProcessor.disconnect();\n this.scriptProcessor = null;\n }\n if (this.mediaStreamAudioSource) {\n this.mediaStreamAudioSource.disconnect();\n this.mediaStreamAudioSource = null;\n }\n if (this.mediaDevicesStream) {\n (_b = (_a = this.mediaDevicesStream) === null || _a === void 0 ? void 0 : _a.getTracks()) === null || _b === void 0 ? void 0 : _b.forEach(function (track) { return track.stop(); });\n this.mediaDevicesStream = null;\n }\n if (this.webSocket) {\n this.webSocket.close();\n }\n }\n catch (e) { }\n };\n StreamingAvatar.prototype.newSession = function (requestData) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, _c, _d;\n return __generator(this, function (_e) {\n return [2 /*return*/, this.request(\"/v1/streaming.new\", {\n avatar_name: requestData.avatarName,\n quality: requestData.quality,\n knowledge_base_id: requestData.knowledgeId,\n knowledge_base: requestData.knowledgeBase,\n voice: {\n voice_id: (_a = requestData.voice) === null || _a === void 0 ? void 0 : _a.voiceId,\n rate: (_b = requestData.voice) === null || _b === void 0 ? void 0 : _b.rate,\n emotion: (_c = requestData.voice) === null || _c === void 0 ? void 0 : _c.emotion,\n elevenlabs_settings: (_d = requestData === null || requestData === void 0 ? void 0 : requestData.voice) === null || _d === void 0 ? void 0 : _d.elevenlabsSettings,\n },\n language: requestData.language,\n version: \"v2\",\n video_encoding: \"H264\",\n source: 'sdk',\n disable_idle_timeout: requestData.disableIdleTimeout,\n })];\n });\n });\n };\n StreamingAvatar.prototype.startSession = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.request(\"/v1/streaming.start\", {\n session_id: this.sessionId,\n })];\n });\n });\n };\n StreamingAvatar.prototype.speak = function (requestData) {\n return __awaiter(this, void 0, void 0, function () {\n var frame, encodedFrame;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n requestData.taskType = requestData.taskType || requestData.task_type || TaskType.TALK;\n requestData.taskMode = requestData.taskMode || TaskMode.ASYNC;\n // try to use websocket first\n // only support talk task\n if (this.webSocket && this.audioRawFrame && requestData.task_type === TaskType.TALK && requestData.taskMode !== TaskMode.SYNC) {\n frame = (_a = this.audioRawFrame) === null || _a === void 0 ? void 0 : _a.create({\n text: {\n text: requestData.text,\n },\n });\n encodedFrame = new Uint8Array((_b = this.audioRawFrame) === null || _b === void 0 ? void 0 : _b.encode(frame).finish());\n (_c = this.webSocket) === null || _c === void 0 ? void 0 : _c.send(encodedFrame);\n return [2 /*return*/];\n }\n return [2 /*return*/, this.request(\"/v1/streaming.task\", {\n text: requestData.text,\n session_id: this.sessionId,\n task_mode: requestData.taskMode,\n task_type: requestData.taskType,\n })];\n });\n });\n };\n StreamingAvatar.prototype.startListening = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.request(\"/v1/streaming.start_listening\", {\n session_id: this.sessionId,\n })];\n });\n });\n };\n StreamingAvatar.prototype.stopListening = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.request(\"/v1/streaming.stop_listening\", {\n session_id: this.sessionId,\n })];\n });\n });\n };\n StreamingAvatar.prototype.interrupt = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.request(\"/v1/streaming.interrupt\", {\n session_id: this.sessionId,\n })];\n });\n });\n };\n StreamingAvatar.prototype.stopAvatar = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // clear some resources\n this.closeVoiceChat();\n return [2 /*return*/, this.request(\"/v1/streaming.stop\", {\n session_id: this.sessionId,\n })];\n });\n });\n };\n StreamingAvatar.prototype.on = function (eventType, listener) {\n this.eventTarget.addEventListener(eventType, listener);\n return this;\n };\n StreamingAvatar.prototype.off = function (eventType, listener) {\n this.eventTarget.removeEventListener(eventType, listener);\n return this;\n };\n StreamingAvatar.prototype.request = function (path, params, config) {\n return __awaiter(this, void 0, void 0, function () {\n var response, errorText, jsonData, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 5, , 6]);\n return [4 /*yield*/, fetch(this.getRequestUrl(path), {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \".concat(this.token),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(params),\n })];\n case 1:\n response = _a.sent();\n if (!!response.ok) return [3 /*break*/, 3];\n return [4 /*yield*/, response.text()];\n case 2:\n errorText = _a.sent();\n throw new APIError(\"API request failed with status \".concat(response.status), response.status, errorText);\n case 3: return [4 /*yield*/, response.json()];\n case 4:\n jsonData = _a.sent();\n return [2 /*return*/, jsonData.data];\n case 5:\n error_2 = _a.sent();\n throw error_2;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n StreamingAvatar.prototype.emit = function (eventType, detail) {\n var event = new CustomEvent(eventType, { detail: detail });\n this.eventTarget.dispatchEvent(event);\n };\n StreamingAvatar.prototype.getRequestUrl = function (endpoint) {\n return \"\".concat(this.basePath).concat(endpoint);\n };\n StreamingAvatar.prototype.connectWebSocket = function (requestData) {\n return __awaiter(this, void 0, void 0, function () {\n var websocketUrl;\n var _this = this;\n return __generator(this, function (_a) {\n websocketUrl = \"wss://\".concat(new URL(this.basePath).hostname, \"/v1/ws/streaming.chat?session_id=\").concat(this.sessionId, \"&session_token=\").concat(this.token, \"&silence_response=\").concat(requestData.useSilencePrompt);\n if (this.language) {\n websocketUrl += \"&stt_language=\".concat(this.language);\n }\n this.webSocket = new WebSocket(websocketUrl);\n this.webSocket.addEventListener('message', function (event) {\n var eventData = null;\n try {\n eventData = JSON.parse(event.data);\n }\n catch (e) {\n console.error(e);\n return;\n }\n _this.emit(eventData.event_type, eventData);\n });\n this.webSocket.addEventListener('close', function (event) {\n _this.webSocket = null;\n });\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var _a, _b;\n (_a = _this.webSocket) === null || _a === void 0 ? void 0 : _a.addEventListener('error', function (event) {\n _this.webSocket = null;\n reject(event);\n });\n (_b = _this.webSocket) === null || _b === void 0 ? void 0 : _b.addEventListener('open', function () {\n resolve(true);\n });\n })];\n });\n });\n };\n StreamingAvatar.prototype.loadAudioRawFrame = function () {\n return __awaiter(this, void 0, void 0, function () {\n var root;\n return __generator(this, function (_a) {\n if (!this.audioRawFrame) {\n root = protobuf.Root.fromJSON(jsonDescriptor);\n this.audioRawFrame = root === null || root === void 0 ? void 0 : root.lookupType('pipecat.Frame');\n }\n return [2 /*return*/];\n });\n });\n };\n return StreamingAvatar;\n}());\n\nexport { AvatarQuality, StreamingEvents, TaskMode, TaskType, VoiceEmotion, StreamingAvatar as default };\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport StreamingAvatar, {\n AvatarQuality,\n StreamingEvents,\n TaskType\n} from \"@heygen/streaming-avatar\";\nimport CryptoJS from 'crypto-js';\nimport { toast } from \"react-toastify\";\nimport { AvatarState, AvatarStatus, ChatMode, Language } from \"../types/Types\";\n\nexport type AvatarComponentRef = {\n stopAvatarState: () => void;\n}\n\n// Define types for component props\ninterface AvatarComponentProps {\n index: number;\n contentLoading: boolean;\n isLastIndex: boolean;\n chatMode: ChatMode;\n message: string;\n loadingMessage: string;\n clearLoadingMessage: () => void;\n updateUserMessage: (message: string) => void;\n greet: boolean;\n setGreet: (greet: boolean) => void;\n avatarState: AvatarState;\n setAvatarState: (state: AvatarState) => void;\n language: Language;\n\n}\n\nexport const AvatarComponent = forwardRef(({\n index, contentLoading, isLastIndex, chatMode, message, loadingMessage, clearLoadingMessage, updateUserMessage,\n greet, setGreet, avatarState, setAvatarState, language\n}, ref) => {\n const [stream, setStream] = useState(null);\n const [initialized, setInitialized] = useState(false);\n const mediaStream = useRef(null);\n const avatar = useRef(null);\n const [avatarId] = useState(\"Wayne_20240711\");\n const [voiceId] = useState(\"867814af4d834e519793267b895aaeb2\");\n const [avatarStatus, setAvatarStatus] = useState(AvatarStatus.NOT_INITIALIZED);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isListening, setIsListening] = useState(false);\n const [interrupted, setInterrupted] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const avatarContainerRef = useRef(null);\n \n\n useImperativeHandle(ref, () => ({\n stopAvatarState: async () => {\n if (avatarState === AvatarState.SPEAKING) {\n interrupt();\n } else {\n if (avatarState === AvatarState.LISTENING) {\n avatar.current?.closeVoiceChat();\n } else {\n await avatar.current?.startVoiceChat();\n }\n setIsListening(!isListening);\n setAvatarState(avatarState === AvatarState.LISTENING ? AvatarState.IDLE : AvatarState.LISTENING);\n }\n }\n }));\n\n // Mutable flag for first talk\n let firstTalk = useRef(true);\n\n useEffect(() => {\n if (chatMode !== ChatMode.TEXT && avatarStatus === AvatarStatus.INITIALIZED) {\n if (contentLoading) {\n if (isLastIndex) {\n if (loadingMessage.split(\" \").length >= 15) {\n console.log('loadingMessage', loadingMessage);\n console.log('started speaking when loading');\n speak(loadingMessage);\n }\n } else {\n console.log('interrupted speaking when loading');\n }\n }\n }\n }, [contentLoading, isLastIndex, avatarStatus, chatMode, loadingMessage]);\n\n useEffect(() => {\n if (!contentLoading && avatarState !== AvatarState.SPEAKING && loadingMessage.length > 0) {\n console.log('loadingMessage', loadingMessage);\n speak(loadingMessage);\n firstTalk.current = true;\n }\n }, [avatarState, loadingMessage, contentLoading]);\n\n function decryptToken(encryptedToken: string): string | null {\n try {\n\n const encryptedData = CryptoJS.enc.Base64.parse(encryptedToken);\n // Separate IV and ciphertext\n const iv = CryptoJS.lib.WordArray.create(encryptedData.words.slice(0, 4), 16);\n const ciphertext = CryptoJS.lib.WordArray.create(encryptedData.words.slice(4));\n const decryptKey = process.env.REACT_APP_MY_DECRYPTION_KEY!.toString();\n // console.log(\"decryptKey\", decryptKey);\n const key = CryptoJS.enc.Utf8.parse(decryptKey); // Ensure this key matches AES_KEY from backend\n\n const decrypted = CryptoJS.AES.decrypt(\n { ciphertext: ciphertext } as CryptoJS.lib.CipherParams,\n key,\n { iv: iv, padding: CryptoJS.pad.Pkcs7, mode: CryptoJS.mode.CBC }\n );\n\n const decryptToken = decrypted.toString(CryptoJS.enc.Utf8);\n // console.log(\"decryptToken\", decryptToken);\n return decryptToken;\n } catch (error) {\n console.error(\"Decryption failed\", error);\n return null;\n }\n }\n\n function speak(message: string) {\n if (!interrupted && avatarState !== AvatarState.SPEAKING && message.length > 0) {\n mediaStream.current?.play();\n console.log(\"Avatar started talking\");\n avatar.current?.speak({\n text: message,\n task_type: TaskType.REPEAT\n }).catch(() => {\n setAvatarStatus(AvatarStatus.NOT_INITIALIZED);\n init(language);\n });\n clearLoadingMessage();\n }\n }\n\n async function init(language: Language) {\n setAvatarStatus(AvatarStatus.INITIALIZING);\n try {\n const response = await fetch(`${process.env.REACT_APP_BASE_URL}/getAccessToken`);\n const result = await response.json();\n const token = decryptToken(result.data.token);\n\n if (!token) {\n throw new Error('Token decryption failed');\n }\n\n avatar.current = new StreamingAvatar({ token });\n\n avatar.current.on(StreamingEvents.AVATAR_START_TALKING, () => {\n if (firstTalk.current && !greet) {\n interrupt();\n firstTalk.current = false;\n }\n console.log('started talking');\n setIsPlaying(true);\n setAvatarState(AvatarState.SPEAKING);\n\n\n });\n\n avatar.current.on(StreamingEvents.AVATAR_STOP_TALKING, () => {\n console.log('stopped talking');\n setIsPlaying(false);\n (chatMode === ChatMode.LIVE_CHAT) ? setAvatarState(AvatarState.LISTENING) : setAvatarState(AvatarState.IDLE);\n });\n\n avatar.current.on(StreamingEvents.STREAM_DISCONNECTED, () => {\n setIsPlaying(false);\n (chatMode === ChatMode.LIVE_CHAT) ? setAvatarState(AvatarState.LISTENING) : setAvatarState(AvatarState.IDLE);\n setAvatarStatus(AvatarStatus.NOT_INITIALIZED);\n });\n\n avatar.current.on(StreamingEvents.STREAM_READY, (e: any) => {\n setAvatarStatus(AvatarStatus.STREAM_READY);\n setStream(e.detail);\n });\n\n avatar.current.on(StreamingEvents.USER_TALKING_MESSAGE, (e) => {\n console.log(\"user message\", e);\n updateUserMessage(e.detail.message);\n setInterrupted(false);\n mediaStream.current?.pause();\n });\n\n setInitialized(true);\n\n await avatar.current?.createStartAvatar({\n quality: AvatarQuality.Low,\n avatarName: avatarId,\n voice: {\n voiceId: voiceId\n },\n language: language.isoCode\n });\n\n // if (res) setData(res);\n await avatar.current?.startVoiceChat();\n } catch (error) {\n toast.error(\"Something went wrong. Please try again later.\");\n console.error('Error starting avatar session:', error);\n }\n }\n\n useEffect(() => {\n if (stream && mediaStream.current) {\n mediaStream.current.srcObject = stream;\n console.log('stream', mediaStream.current?.srcObject);\n mediaStream.current.onloadedmetadata = () => {\n if (mediaStream.current) {\n setAvatarStatus(AvatarStatus.INITIALIZED);\n mediaStream.current.play().then(async () => {\n if (greet) {\n speak(language.greetings[Math.floor(Math.random() * language.greetings.length)]);\n setGreet(false);\n }\n if (chatMode === ChatMode.LIVE_CHAT) {\n await avatar.current?.startListening();\n setIsListening(true);\n setAvatarState(AvatarState.LISTENING);\n } \n }).catch((e) => {\n console.log('Stream play error', e);\n });\n }\n };\n }\n }, [mediaStream, stream]);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n console.log('isVisible', entry.isIntersecting);\n setIsVisible(entry.isIntersecting);\n // firstTalk.current = entry.isIntersecting;\n },\n {\n threshold: 1.0\n }\n );\n\n if (chatMode !== ChatMode.TEXT) {\n init(language);\n avatarContainerRef.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n });\n\n if (avatarContainerRef.current) {\n observer.observe(avatarContainerRef.current);\n }\n } else {\n stop();\n if (avatarContainerRef.current) {\n observer.unobserve(avatarContainerRef.current);\n }\n }\n\n return () => {\n console.log('stopped streaming');\n stop();\n }\n }, [chatMode, language]);\n\n async function stop() {\n avatar.current?.closeVoiceChat();\n if (avatarStatus === AvatarStatus.INITIALIZED) { await avatar.current?.stopAvatar(); }\n }\n\n async function interrupt() {\n try {\n if (avatarState === AvatarState.SPEAKING) {\n await avatar.current?.interrupt();\n if (contentLoading) setInterrupted(true);\n }\n } catch (e) {\n mediaStream.current?.pause();\n }\n }\n\n /* const handlePlayPause = () => {\n if (isPlaying) {\n interrupt();\n } else {\n speak(message);\n }\n }; */\n\n return (\n \n {(avatarStatus === AvatarStatus.INITIALIZING) ? (\n
\n
\n
\n ) :
\n {\n setAvatarStatus(AvatarStatus.INITIALIZED);\n }}\n >\n \n \n {/*
\n {(avatarState === AvatarState.SPEAKING && !mediaStream.current?.paused) ? \"Speaking...\" : (contentLoading ? \"Processing...\" : avatarState === AvatarState.LISTENING && 'Listening...')}\n
*/}\n
}\n \n\n {/* \n {initialized && isPlaying && (\n \n )}\n
*/}\n\n {/* {((avatarStatus === AvatarStatus.STREAM_READY || avatarStatus === AvatarStatus.INITIALIZED) && chatMode === ChatMode.LIVE_CHAT) &&
\n \n
} */}\n
\n );\n});","import {useEffect, useState} from \"react\";\n\nconst useCurrentHeight = () => {\n const [height, setHeight] = useState(window.innerHeight);\n useEffect(() => {\n const handleResize = () => {\n setHeight(window.innerHeight);\n }\n window.addEventListener('resize', handleResize);\n return() => window.removeEventListener('resize', handleResize)\n }, []);\n return height + 'px';\n};\n\nexport default useCurrentHeight;","import { Autocomplete, AutocompleteItem, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, useDisclosure } from \"@nextui-org/react\";\nimport { useState } from \"react\";\nimport { Language } from \"../types/Types\";\n\nexport type LanguageSelectionProps = {\n selectedLanguage: Language;\n setSelectedLanguage: (value: Language) => void;\n}\n\nexport const languages: Language[] = [\n {\n name: \"English\",\n isoCode: \"en\",\n greetings: [\n \"Hello! How can I assist you today?\",\n \"Hi there! What can I help you with?\",\n \"Greetings! Ready to tackle your tasks together?\",\n \"Hey! Need any assistance?\",\n \"Good day! How can I make your day easier?\"\n ]\n },\n {\n name: \"French\",\n isoCode: \"fr\",\n greetings: [\n \"Bonjour! Comment puis-je vous aider aujourd'hui?\",\n \"Salut! Que puis-je faire pour vous?\",\n \"Coucou! Prêt à accomplir vos tâches ensemble?\",\n \"Hey! Besoin d'aide?\",\n \"Bonne journée! Comment puis-je rendre votre journée plus facile?\"\n ]\n },\n {\n name: \"German\",\n isoCode: \"de\",\n greetings: [\n \"Hallo! Wie kann ich Ihnen heute helfen?\",\n \"Hi! Was kann ich für Sie tun?\",\n \"Grüße! Bereit, Ihre Aufgaben gemeinsam zu bewältigen?\",\n \"Hey! Brauchen Sie Hilfe?\",\n \"Guten Tag! Wie kann ich Ihren Tag einfacher machen?\"\n ]\n },\n {\n name: \"Italian\",\n isoCode: \"it\",\n greetings: [\n \"Ciao! Come posso aiutarti oggi?\",\n \"Salve! Cosa posso fare per te?\",\n \"Saluti! Pronto a affrontare i tuoi compiti insieme?\",\n \"Ehi! Hai bisogno di assistenza?\",\n \"Buona giornata! Come posso rendere la tua giornata più facile?\"\n ]\n },\n {\n name: \"Hindi\",\n isoCode: \"hi\",\n greetings: [\n \"नमस्ते! मैं आज आपकी कैसे मदद कर सकता हूँ?\",\n \"नमस्कार! मैं आपकी किस प्रकार सहायता कर सकता हूँ?\",\n \"सुप्रभात! आज मैं आपकी क्या मदद कर सकता हूँ?\",\n \"हैलो! क्या आपको किसी सहायता की आवश्यकता है?\",\n \"नमस्ते! मैं आपकी दिन को आसान कैसे बना सकता हूँ?\"\n ]\n },\n {\n name: \"Tamil\",\n isoCode: \"ta\",\n greetings: [\n \"வணக்கம்! இன்று உங்களுக்கு எப்படி உதவலாம்?\",\n \"ஹலோ! உங்களுக்கு என்ன உதவி தேவை?\",\n \"அன்பு நல்வாழ்த்துக்கள்! உங்கள் பணிகளை ஒன்றாகச் செய்ய தயாரா?\",\n \"ஹாய்! உங்களுக்கு உதவி தேவை?\",\n \"நல்ல நாள்! உங்கள் நாளை எவ்வாறு எளிதாக்கலாம்?\"\n ]\n }\n];\n\nexport const LanguageSelection: React.FC =\n ({\n selectedLanguage, setSelectedLanguage\n }) => {\n const { isOpen, onOpen, onOpenChange, onClose } = useDisclosure();\n const [language, setLanguage] = useState(selectedLanguage);\n return (\n <>\n \n \n \n Choose your preferred language\n \n {\n const selectedLanguage = languages.find((language) => language.isoCode === key);\n if (selectedLanguage) {\n setLanguage(selectedLanguage);\n }\n }}>\n {\n languages.map((language) => (\n \n {language.name}\n \n ))\n }\n \n \n \n \n \n \n \n \n \n \n \n\n );\n }","export type IsFnHelper = (value: unknown) => value is T;\n\nexport function isTypeof(value: unknown, type: string): value is T {\n return typeof value === type;\n}\n\nexport function isToString(value: unknown, type: string): value is T {\n return Object.prototype.toString.call(value) === `[object ${type}]`;\n}\n\nexport function isInstanceOf(value: unknown, reference: T): value is T {\n try {\n return value instanceof reference;\n } catch (err) {\n return false;\n }\n}\n\nexport const isUndefined = ((value) => isTypeof(value, 'undefined')) as IsFnHelper;\n\nexport const isNull = ((value) => isTypeof(value, 'null')) as IsFnHelper;\n\nexport const isString = ((value) => isTypeof(value, 'string')) as IsFnHelper;\n\nexport const isNumber = ((value) =>\n (isTypeof(value, 'number') && !isNaN(value)) || isTypeof(value, 'bigint')) as IsFnHelper;\n\nexport const isInt = ((value) => isNumber(value) && Number.isInteger(value)) as IsFnHelper;\n\nexport const isBoolean = ((value) => isTypeof(value, 'boolean')) as IsFnHelper;\n\nexport const isSymbol = ((value) => isTypeof(value, 'symbol')) as IsFnHelper;\n\nexport const isObject = ((value) => !isNull(value) && isTypeof(value, 'object')) as IsFnHelper;\n\nexport const isFunction = ((value) => isTypeof(value, 'function')) as IsFnHelper;\n\nexport const isArray = ((value) => isToString(value, 'Array')) as IsFnHelper;\n\nexport const isRegExp = ((value) => isToString(value, 'RegExp')) as IsFnHelper;\n\nexport const isThenable = ((value) => isFunction((value as any)?.then)) as IsFnHelper<{ then: Function }>;\n\nexport const isPrimitive = ((value) => !isObject(value) && !isFunction(value)) as IsFnHelper<\n string | number | bigint | boolean | symbol\n>;\n\nexport const isEventDefined = typeof Event !== 'undefined';\n\nexport const isEvent = ((value) => isEventDefined && isInstanceOf(value, Event)) as IsFnHelper;\n\nexport const isErrorDefined = typeof Error !== 'undefined';\n\nexport const isError = ((value) => isErrorDefined && isInstanceOf(value, Error)) as IsFnHelper;\n\nexport const isErrorEvent = ((value) => isToString(value, 'ErrorEvent')) as IsFnHelper;\n\nexport const isDomError = ((value) => isToString(value, 'DOMError')) as IsFnHelper;\n\nexport const isDomException = ((value) => isToString(value, 'DOMException')) as IsFnHelper;\n\nexport const isElementDefined = typeof Element !== 'undefined';\n\nexport const isElement = ((value) => isElementDefined && isInstanceOf(value, Element)) as IsFnHelper;\n\nexport const isMapDefined = typeof Map !== 'undefined';\n\nexport const isMap = ((value) => isMapDefined && isInstanceOf(value, Map)) as IsFnHelper>;\n\nexport const isSyntheticEvent = ((value) =>\n isObject(value) &&\n 'nativeEvent' in value &&\n 'preventDefault' in value &&\n 'stopPropagation' in value) as IsFnHelper;\n","import type { API, InternalLogger } from '@grafana/faro-web-sdk';\n\nexport let internalLogger: InternalLogger;\nexport let api: API;\n\nexport function setDependencies(newInternalLogger: InternalLogger, newApi: API): void {\n internalLogger = newInternalLogger;\n api = newApi;\n}\n","import { version } from 'react';\n\nexport const reactVersion = version;\nexport const reactVersionMajor = getMajorReactVersion();\nexport const isReactVersionAtLeast18 = isReactVersionAtLeast(18);\nexport const isReactVersionAtLeast17 = isReactVersionAtLeast(17);\nexport const isReactVersionAtLeast16 = isReactVersionAtLeast(16);\n\nexport function getMajorReactVersion(): number | null {\n const major = reactVersion.split('.');\n\n try {\n return major[0] ? parseInt(major[0], 10) : null;\n } catch (err) {\n return null;\n }\n}\n\nexport function isReactVersionAtLeast(version: number): boolean {\n return reactVersionMajor === null ? false : reactVersionMajor >= version;\n}\n","import { Component, isValidElement } from 'react';\nimport type { ErrorInfo, ReactNode } from 'react';\n\nimport { isFunction } from '@grafana/faro-web-sdk';\n\nimport { api, internalLogger } from '../dependencies';\nimport { isReactVersionAtLeast17 } from '../utils';\n\nimport { faroErrorBoundaryInitialState } from './const';\nimport type { FaroErrorBoundaryProps, FaroErrorBoundaryState } from './types';\n\nexport class FaroErrorBoundary extends Component {\n override state: FaroErrorBoundaryState = faroErrorBoundaryInitialState;\n\n constructor(props: FaroErrorBoundaryProps) {\n super(props);\n\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n }\n\n getErrorWithComponentStack(error: Error, errorInfo: ErrorInfo): Error {\n if (!isReactVersionAtLeast17 || !errorInfo.componentStack) {\n return error;\n }\n\n const newError = new Error(error.message);\n\n newError.name = `React ErrorBoundary ${error.name}`;\n newError.stack = errorInfo.componentStack;\n\n return newError;\n }\n\n static getDerivedStateFromError(error: Error): FaroErrorBoundaryState {\n return {\n hasError: true,\n error,\n };\n }\n\n override componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n const errorWithComponentStack = this.getErrorWithComponentStack(error, errorInfo);\n\n this.props.beforeCapture?.(errorWithComponentStack);\n\n api.pushError(errorWithComponentStack, this.props.pushErrorOptions);\n\n this.props.onError?.(errorWithComponentStack);\n\n this.setState({ hasError: true, error });\n }\n\n override componentDidMount(): void {\n this.props.onMount?.();\n }\n\n override componentWillUnmount(): void {\n this.props.onUnmount?.(this.state.error);\n }\n\n resetErrorBoundary(): void {\n this.props.onReset?.(this.state.error);\n\n this.setState(faroErrorBoundaryInitialState);\n }\n\n override render(): ReactNode {\n if (!this.state.hasError) {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n const element = !isFunction(this.props.fallback)\n ? this.props.fallback\n : this.props.fallback(this.state.error!, this.resetErrorBoundary);\n\n if (isValidElement(element)) {\n return element;\n }\n\n if (this.props.fallback) {\n internalLogger?.warn('ErrorBoundary\\n', 'Cannot get a valid ReactElement from \"fallback\"');\n }\n\n return null;\n }\n}\n","export function noop(): void {}\n","import { noop } from '../utils';\n\nimport type { InternalLogger } from './types';\n\nexport enum InternalLoggerLevel {\n OFF = 0,\n ERROR = 1,\n WARN = 2,\n INFO = 3,\n VERBOSE = 4,\n}\n\nexport const defaultInternalLoggerPrefix = 'Faro';\n\nexport const defaultInternalLogger: InternalLogger = {\n debug: noop,\n error: noop,\n info: noop,\n prefix: defaultInternalLoggerPrefix,\n warn: noop,\n} as const;\n\nexport const defaultInternalLoggerLevel = InternalLoggerLevel.ERROR;\n","import type { UnpatchedConsole } from './types';\n\nexport const defaultUnpatchedConsole: UnpatchedConsole = { ...console };\n","import type { Config } from '../config';\nimport { defaultInternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport { defaultUnpatchedConsole } from '../unpatchedConsole';\n\nimport type { Extension } from './types';\n\nexport abstract class BaseExtension implements Extension {\n abstract readonly name: string;\n abstract readonly version: string;\n\n unpatchedConsole = defaultUnpatchedConsole;\n internalLogger = defaultInternalLogger;\n config = {} as Config;\n metas = {} as Metas;\n\n logDebug(...args: unknown[]): void {\n this.internalLogger.debug(`${this.name}\\n`, ...args);\n }\n\n logInfo(...args: unknown[]): void {\n this.internalLogger.info(`${this.name}\\n`, ...args);\n }\n\n logWarn(...args: unknown[]): void {\n this.internalLogger.warn(`${this.name}\\n`, ...args);\n }\n\n logError(...args: unknown[]): void {\n this.internalLogger.error(`${this.name}\\n`, ...args);\n }\n}\n","import type { API } from '../api';\nimport { BaseExtension } from '../extensions';\nimport type { Transports } from '../transports';\n\nimport type { Instrumentation } from './types';\n\nexport abstract class BaseInstrumentation extends BaseExtension implements Instrumentation {\n api: API = {} as API;\n transports: Transports = {} as Transports;\n\n abstract initialize(): void;\n}\n","// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.12.3';\n","export interface ReactRouterLocation {\n hash: string;\n key: string;\n pathname: string;\n search: string;\n state: S;\n}\n\nexport interface ReactRouterHistory extends Record {\n listen?: (cb: (location: ReactRouterLocation, action: NavigationType) => void) => void;\n location?: ReactRouterLocation;\n}\n\nexport enum ReactRouterVersion {\n V4 = 'v4',\n V5 = 'v5',\n V6 = 'v6',\n V6_data_router = 'v6_data_router',\n}\n\nexport enum NavigationType {\n Pop = 'POP',\n Push = 'PUSH',\n Replace = 'REPLACE',\n}\n","/**\n * @deprecated The conventions object will be removed in a future version\n */\nexport const Conventions = {\n /**\n * @deprecated The event names object will be removed in a future version\n */\n EventNames: {\n CLICK: 'click',\n NAVIGATION: 'navigation',\n SESSION_START: 'session_start',\n VIEW_CHANGED: 'view_changed',\n },\n} as const;\n\nexport const EVENT_CLICK = 'click';\nexport const EVENT_NAVIGATION = 'navigation';\nexport const EVENT_VIEW_CHANGED = 'view_changed';\nexport const EVENT_SESSION_START = 'session_start';\nexport const EVENT_SESSION_RESUME = 'session_resume';\nexport const EVENT_SESSION_EXTEND = 'session_extend';\nexport const EVENT_ROUTE_CHANGE = 'route_change';\n","import { EVENT_ROUTE_CHANGE } from '@grafana/faro-web-sdk';\n\nimport { api } from '../../dependencies';\n\nimport type { ReactRouterV4V5ActiveEvent } from './types';\n\nexport let activeEvent: ReactRouterV4V5ActiveEvent | undefined = undefined;\n\nexport function createNewActiveEvent(url: string): ReactRouterV4V5ActiveEvent {\n activeEvent = {\n route: '',\n url,\n };\n\n return activeEvent;\n}\n\nexport function setActiveEventRoute(route: string): void {\n if (activeEvent) {\n activeEvent.route = route;\n }\n}\n\nexport function sendActiveEvent(): void {\n api.pushEvent(EVENT_ROUTE_CHANGE, activeEvent, undefined, { skipDedupe: true });\n\n activeEvent = undefined;\n}\n","import type { ReactRouterHistory } from '../types';\n\nimport type { ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape } from './types';\n\nexport let isInitialized = false;\nexport let history: ReactRouterHistory;\nexport let Route: ReactRouterV4V5RouteShape;\n\nexport function setReactRouterV4V5Dependencies(dependencies: ReactRouterV4V5Dependencies): void {\n isInitialized = true;\n\n history = dependencies.history;\n Route = dependencies.Route;\n}\n\nexport function setReactRouterV4V5SSRDependencies(newDependencies: Pick): void {\n Route = newDependencies.Route;\n}\n","import { setActiveEventRoute } from './activeEvent';\nimport { Route } from './routerDependencies';\nimport type { ReactRouterV4V5RouteProps } from './types';\n\nexport function FaroRoute(props: ReactRouterV4V5RouteProps) {\n if (props?.computedMatch?.isExact) {\n setActiveEventRoute(props.computedMatch.path);\n }\n\n return ;\n}\n","import type { Faro, internalGlobalObjectKey } from '../sdk';\n\nexport type GlobalObject = T & {\n [label: string]: Faro;\n\n [internalGlobalObjectKey]: Faro;\n};\n\n// This does not uses isUndefined method because it will throw an error in non-browser environments\nexport const globalObject = (typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : undefined) as unknown as GlobalObject;\n","import hoistNonReactStatics from 'hoist-non-react-statics';\nimport type { FunctionComponent } from 'react';\n\nimport { globalObject } from '@grafana/faro-web-sdk';\n\nimport type { ReactRouterV4V5Config } from '../../types';\nimport { NavigationType, ReactRouterVersion } from '../types';\n\nimport { createNewActiveEvent, sendActiveEvent } from './activeEvent';\nimport { FaroRoute } from './FaroRoute';\nimport { setReactRouterV4V5Dependencies } from './routerDependencies';\nimport type { ReactRouterV4V5Dependencies } from './types';\n\nexport function initializeReactRouterV4V5Instrumentation(dependencies: ReactRouterV4V5Dependencies): void {\n const Route = dependencies.Route as FunctionComponent;\n const componentDisplayName = Route.displayName ?? Route.name;\n (FaroRoute as FunctionComponent).displayName = `faroRoute(${componentDisplayName})`;\n hoistNonReactStatics(FaroRoute, Route);\n\n setReactRouterV4V5Dependencies(dependencies);\n\n createNewActiveEvent(globalObject.location?.href);\n\n dependencies.history.listen?.((_location, action) => {\n if (action === NavigationType.Push || action === NavigationType.Pop) {\n sendActiveEvent();\n\n createNewActiveEvent(globalObject.location?.href);\n }\n });\n}\n\nexport function createReactRouterV4Options(dependencies: ReactRouterV4V5Dependencies): ReactRouterV4V5Config {\n return {\n version: ReactRouterVersion.V4,\n dependencies,\n };\n}\n\nexport function createReactRouterV5Options(dependencies: ReactRouterV4V5Dependencies): ReactRouterV4V5Config {\n return {\n version: ReactRouterVersion.V5,\n dependencies,\n };\n}\n","import type {\n ReactRouterV6CreateRoutesFromChildren,\n ReactRouterV6DataRouterDependencies,\n ReactRouterV6Dependencies,\n ReactRouterV6MatchRoutes,\n ReactRouterV6RoutesShape,\n ReactRouterV6UseLocation,\n ReactRouterV6UseNavigationType,\n} from './types';\n\nexport let isInitialized = false;\nexport let createRoutesFromChildren: ReactRouterV6CreateRoutesFromChildren;\nexport let matchRoutes: ReactRouterV6MatchRoutes;\nexport let Routes: ReactRouterV6RoutesShape;\nexport let useLocation: ReactRouterV6UseLocation;\nexport let useNavigationType: ReactRouterV6UseNavigationType;\n\nexport function setReactRouterV6Dependencies(newDependencies: ReactRouterV6Dependencies): void {\n isInitialized = true;\n\n createRoutesFromChildren = newDependencies.createRoutesFromChildren;\n matchRoutes = newDependencies.matchRoutes;\n Routes = newDependencies.Routes;\n useLocation = newDependencies.useLocation;\n useNavigationType = newDependencies.useNavigationType;\n}\n\nexport function setReactRouterV6SSRDependencies(newDependencies: Pick): void {\n Routes = newDependencies.Routes;\n}\n\nexport function setReactRouterV6DataRouterDependencies(newDependencies: ReactRouterV6DataRouterDependencies): void {\n isInitialized = true;\n matchRoutes = newDependencies.matchRoutes;\n}\n","import type { ReactRouterLocation } from '../types';\n\nimport { matchRoutes } from './routerDependencies';\nimport type { ReactRouterV6RouteObject } from './types';\n\nexport function getNumberOfUrlSegments(url: string): number {\n return url.split(/\\\\?\\//).filter((currentSegment) => currentSegment.length > 0 && currentSegment !== ',').length;\n}\n\nexport function getRouteFromLocation(routes: ReactRouterV6RouteObject[], location: ReactRouterLocation): string {\n if (!routes || routes.length === 0) {\n return location.pathname;\n }\n\n const matchedRoutes = matchRoutes(routes, location);\n\n let pathBuilder = '';\n\n if (matchedRoutes) {\n for (let x = 0; x < matchedRoutes.length; x++) {\n const branch = matchedRoutes[x]!;\n const route = branch.route;\n\n if (route) {\n if (route.index) {\n return branch.pathname;\n }\n\n let path = route.path;\n\n if (path) {\n path = path.startsWith('/') ? path : `/${path}`;\n\n pathBuilder += path;\n\n if (branch.pathname === location.pathname) {\n if (getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname)) {\n return path;\n }\n\n return pathBuilder;\n }\n }\n }\n }\n }\n\n return location.pathname;\n}\n","import { useEffect, useMemo, useRef } from 'react';\n\nimport { EVENT_ROUTE_CHANGE, globalObject } from '@grafana/faro-web-sdk';\n\nimport { api } from '../../dependencies';\nimport { NavigationType } from '../types';\n\nimport { createRoutesFromChildren, isInitialized, Routes, useLocation, useNavigationType } from './routerDependencies';\nimport type { EventRouteTransitionAttributes, ReactRouterV6RoutesProps } from './types';\nimport { getRouteFromLocation } from './utils';\n\nexport function FaroRoutes(props: ReactRouterV6RoutesProps) {\n const location = useLocation?.();\n const navigationType = useNavigationType?.();\n\n const routes = useMemo(() => createRoutesFromChildren?.(props.children) ?? [], [props.children]);\n\n const lastRouteRef = useRef({});\n\n useEffect(() => {\n if (isInitialized && (navigationType === NavigationType.Push || navigationType === NavigationType.Pop)) {\n const route = getRouteFromLocation(routes, location);\n const url = globalObject.location?.href;\n\n api.pushEvent(EVENT_ROUTE_CHANGE, {\n toRoute: route,\n toUrl: globalObject.location?.href,\n ...lastRouteRef.current,\n });\n\n lastRouteRef.current = {\n fromRoute: route,\n fromUrl: url,\n };\n }\n }, [location, navigationType, routes]);\n\n const ActualRoutes = props.routesComponent ?? Routes;\n\n return ;\n}\n","import hoistNonReactStatics from 'hoist-non-react-statics';\n\nimport type { ReactRouterV6Config, ReactRouterV6DataRouterConfig } from '../../types';\nimport { ReactRouterVersion } from '../types';\n\nimport { FaroRoutes } from './FaroRoutes';\nimport {\n setReactRouterV6DataRouterDependencies as setReactRouterV6DataRouterDependencies,\n setReactRouterV6Dependencies,\n} from './routerDependencies';\nimport type { ReactRouterV6DataRouterDependencies, ReactRouterV6Dependencies } from './types';\n\nexport function initializeReactRouterV6Instrumentation(dependencies: ReactRouterV6Dependencies): void {\n hoistNonReactStatics(FaroRoutes, dependencies.Routes);\n setReactRouterV6Dependencies(dependencies);\n}\n\nexport function createReactRouterV6Options(dependencies: ReactRouterV6Dependencies): ReactRouterV6Config {\n return {\n version: ReactRouterVersion.V6,\n dependencies,\n };\n}\n\nexport function initializeReactRouterV6DataRouterInstrumentation(\n dependencies: ReactRouterV6DataRouterDependencies\n): void {\n setReactRouterV6DataRouterDependencies(dependencies);\n}\n\nexport function createReactRouterV6DataOptions(\n dependencies: ReactRouterV6DataRouterDependencies\n): ReactRouterV6DataRouterConfig {\n return {\n version: ReactRouterVersion.V6_data_router,\n dependencies,\n };\n}\n","import type { Attributes, Span, Tracer } from '@opentelemetry/api';\nimport { Component } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { VERSION } from '@grafana/faro-web-sdk';\nimport type { OTELApi } from '@grafana/faro-web-sdk';\n\nimport { api, internalLogger } from '../dependencies';\n\nexport interface FaroProfilerProps {\n children: ReactNode;\n name: string;\n updateProps: Record;\n}\n\nexport class FaroProfiler extends Component {\n protected mountSpan: Span | undefined = undefined;\n protected mountSpanEndTime: number | undefined = undefined;\n protected updateSpan: Span | undefined = undefined;\n\n private get isOtelInitialized(): boolean {\n return !!api?.isOTELInitialized();\n }\n\n private get otel(): OTELApi | undefined {\n return api?.getOTEL()!;\n }\n\n private get tracer(): Tracer {\n return this.otel?.trace.getTracer('@grafana/faro-react', VERSION)!;\n }\n\n private createSpan(\n spanName: string,\n options?: { startTime?: number; endTime?: number; attributes?: Attributes }\n ): Span {\n const span = this.tracer.startSpan(spanName, {\n startTime: options?.startTime,\n attributes: {\n 'react.component.name': this.props.name,\n ...(options?.attributes ?? {}),\n },\n });\n\n this.otel?.trace.setSpan(this.otel.context.active(), span);\n\n if (options?.endTime) {\n span.end(options.endTime);\n }\n\n return span;\n }\n\n private createChildSpan(\n spanName: string,\n parent: Span,\n options?: { startTime?: number; endTime?: number; attributes?: Attributes }\n ): Span {\n let span: Span;\n\n this.otel?.context.with(this.otel.trace.setSpan(this.otel.context.active(), parent), () => {\n span = this.createSpan(spanName, options);\n });\n\n return span!;\n }\n\n constructor(props: FaroProfilerProps) {\n super(props);\n\n if (this.isOtelInitialized) {\n this.mountSpan = this.createSpan('componentMount');\n } else {\n internalLogger?.error(\n 'The Faro React Profiler requires tracing instrumentation. Please enable it in the \"instrumentations\" section of your config.'\n );\n }\n }\n\n override componentDidMount(): void {\n if (this.isOtelInitialized && this.mountSpan) {\n this.mountSpanEndTime = Date.now();\n this.mountSpan.end(this.mountSpanEndTime);\n }\n }\n\n override shouldComponentUpdate({ updateProps }: FaroProfilerProps): boolean {\n if (this.isOtelInitialized && this.mountSpan && updateProps !== this.props.updateProps) {\n const changedProps = Object.keys(updateProps).filter((key) => updateProps[key] !== this.props.updateProps[key]);\n\n if (changedProps.length > 0) {\n this.updateSpan = this.createChildSpan('componentUpdate', this.mountSpan, {\n attributes: {\n 'react.component.changed_props': changedProps,\n },\n });\n }\n }\n\n return true;\n }\n\n override componentDidUpdate(): void {\n if (this.isOtelInitialized && this.updateSpan) {\n this.updateSpan.end();\n this.updateSpan = undefined;\n }\n }\n\n override componentWillUnmount(): void {\n if (this.isOtelInitialized && this.mountSpan) {\n this.createChildSpan('componentRender', this.mountSpan, {\n startTime: this.mountSpanEndTime,\n endTime: Date.now(),\n });\n }\n }\n\n override render(): ReactNode {\n return this.props.children;\n }\n}\n","export const internalGlobalObjectKey = '_faroInternal';\n","import type { API } from '../api';\nimport type { Config } from '../config';\nimport type { Instrumentations } from '../instrumentations';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { Transports } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport { setFaroOnGlobalObject } from './faroGlobalObject';\nimport { setInternalFaroOnGlobalObject } from './internalFaroGlobalObject';\nimport type { Faro } from './types';\n\nexport let faro: Faro = {} as Faro;\n\nexport function registerFaro(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n api: API,\n instrumentations: Instrumentations\n): Faro {\n internalLogger.debug('Initializing Faro');\n\n faro = {\n api,\n config,\n instrumentations,\n internalLogger,\n metas,\n pause: transports.pause,\n transports,\n unpatchedConsole,\n unpause: transports.unpause,\n };\n\n setInternalFaroOnGlobalObject(faro);\n\n setFaroOnGlobalObject(faro);\n\n return faro;\n}\n","import { globalObject } from '../globalObject';\n\nimport { internalGlobalObjectKey } from './const';\nimport type { Faro } from './types';\n\nexport function getInternalFromGlobalObject(): Faro | undefined {\n return globalObject[internalGlobalObjectKey];\n}\n\nexport function setInternalFaroOnGlobalObject(faro: Faro): void {\n if (!faro.config.isolate) {\n faro.internalLogger.debug('Registering internal Faro instance on global object');\n\n Object.defineProperty(globalObject, internalGlobalObjectKey, {\n configurable: false,\n enumerable: false,\n writable: false,\n value: faro,\n });\n } else {\n faro.internalLogger.debug('Skipping registering internal Faro instance on global object');\n }\n}\n\nexport function isInternalFaroOnGlobalObject(): boolean {\n return internalGlobalObjectKey in globalObject;\n}\n","import { globalObject } from '../globalObject';\n\nimport type { Faro } from './types';\n\nexport function setFaroOnGlobalObject(faro: Faro): void {\n if (!faro.config.preventGlobalExposure) {\n faro.internalLogger.debug(\n `Registering public faro reference in the global scope using \"${faro.config.globalObjectKey}\" key`\n );\n\n if (faro.config.globalObjectKey in globalObject) {\n faro.internalLogger.warn(\n `Skipping global registration due to key \"${faro.config.globalObjectKey}\" being used already. Please set \"globalObjectKey\" to something else or set \"preventGlobalExposure\" to \"true\"`\n );\n\n return;\n }\n\n Object.defineProperty(globalObject, faro.config.globalObjectKey, {\n configurable: false,\n writable: false,\n value: faro,\n });\n } else {\n faro.internalLogger.debug('Skipping registering public Faro instance in the global scope');\n }\n}\n","export const primitiveUnhandledValue = 'Non-Error promise rejection captured with value:';\nexport const primitiveUnhandledType = 'UnhandledRejection';\n\nexport const domErrorType = 'DOMError';\nexport const domExceptionType = 'DOMException';\n\nexport const objectEventValue = 'Non-Error exception captured with keys:';\n\nexport const unknownSymbolString = '?';\n\nexport const valueTypeRegex =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n","export const newLineString = '\\n';\nexport const evalString = 'eval';\nexport const unknownSymbolString = '?';\nexport const atString = '@';\n\nexport const webkitLineRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nexport const webkitEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\nexport const webkitEvalString = 'eval';\nexport const webkitAddressAtString = 'address at ';\nexport const webkitAddressAtStringLength = webkitAddressAtString.length;\n\nexport const firefoxLineRegex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nexport const firefoxEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nexport const firefoxEvalString = ' > eval';\n\nexport const safariExtensionString = 'safari-extension';\nexport const safariWebExtensionString = 'safari-web-extension';\n\nexport const reactMinifiedRegex = /Minified React error #\\d+;/i;\n","import type { ExceptionStackFrame } from '@grafana/faro-core';\n\nimport { unknownSymbolString } from './const';\n\nexport function buildStackFrame(\n filename: string | undefined,\n func: string | undefined,\n lineno: number | undefined,\n colno: number | undefined\n): ExceptionStackFrame {\n const stackFrame: ExceptionStackFrame = {\n filename: filename || document.location.href,\n function: func || unknownSymbolString,\n };\n\n if (lineno !== undefined) {\n stackFrame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n stackFrame.colno = colno;\n }\n\n return stackFrame;\n}\n","import { atString, safariExtensionString, safariWebExtensionString } from './const';\n\nexport function getDataFromSafariExtensions(\n func: string | undefined,\n filename: string | undefined\n): [string | undefined, string | undefined] {\n const isSafariExtension = func?.includes(safariExtensionString);\n const isSafariWebExtension = !isSafariExtension && func?.includes(safariWebExtensionString);\n\n if (!isSafariExtension && !isSafariWebExtension) {\n return [func, filename];\n }\n\n return [\n func?.includes(atString) ? func.split(atString)[0] : func,\n isSafariExtension ? `${safariExtensionString}:${filename}` : `${safariWebExtensionString}:${filename}`,\n ];\n}\n","import { isNumber } from '@grafana/faro-core';\nimport type { ExceptionStackFrame, ExtendedError } from '@grafana/faro-core';\n\nimport { buildStackFrame } from './buildStackFrame';\nimport {\n evalString,\n firefoxEvalRegex,\n firefoxEvalString,\n firefoxLineRegex,\n newLineString,\n reactMinifiedRegex,\n webkitAddressAtString,\n webkitAddressAtStringLength,\n webkitEvalRegex,\n webkitEvalString,\n webkitLineRegex,\n} from './const';\nimport { getDataFromSafariExtensions } from './getDataFromSafariExtensions';\n\nexport function getStackFramesFromError(error: ExtendedError): ExceptionStackFrame[] {\n let lines: string[] = [];\n\n if (error.stacktrace) {\n lines = error.stacktrace.split(newLineString).filter((_line, idx) => idx % 2 === 0);\n } else if (error.stack) {\n lines = error.stack.split(newLineString);\n }\n\n const stackFrames = lines.reduce((acc, line, idx) => {\n let parts: RegExpExecArray | null;\n let func: string | undefined;\n let filename: string | undefined;\n let lineno: string | undefined;\n let colno: string | undefined;\n\n if ((parts = webkitLineRegex.exec(line))) {\n func = parts[1];\n filename = parts[2];\n lineno = parts[3];\n colno = parts[4];\n\n if (filename?.startsWith(webkitEvalString)) {\n const submatch = webkitEvalRegex.exec(filename);\n\n if (submatch) {\n filename = submatch[1];\n lineno = submatch[2];\n colno = submatch[3];\n }\n }\n\n filename = filename?.startsWith(webkitAddressAtString)\n ? filename.substring(webkitAddressAtStringLength)\n : filename;\n [func, filename] = getDataFromSafariExtensions(func, filename);\n } else if ((parts = firefoxLineRegex.exec(line))) {\n func = parts[1];\n filename = parts[3];\n lineno = parts[4];\n colno = parts[5];\n\n if (!!filename && filename.includes(firefoxEvalString)) {\n const submatch = firefoxEvalRegex.exec(filename);\n\n if (submatch) {\n func = func || evalString;\n filename = submatch[1];\n lineno = submatch[2];\n }\n } else if (idx === 0 && !colno && isNumber(error.columnNumber)) {\n colno = String(error.columnNumber! + 1);\n }\n\n [func, filename] = getDataFromSafariExtensions(func, filename);\n }\n\n if (filename || func) {\n acc.push(buildStackFrame(filename, func, lineno ? Number(lineno) : undefined, colno ? Number(colno) : undefined));\n }\n\n return acc;\n }, [] as ExceptionStackFrame[]);\n\n if (reactMinifiedRegex.test(error.message)) {\n return stackFrames.slice(1);\n }\n\n return stackFrames;\n}\n","import { isDomError, isDomException, isError, isErrorEvent, isEvent, isObject } from '@grafana/faro-core';\nimport type { ExceptionStackFrame } from '@grafana/faro-core';\n\nimport { domErrorType, domExceptionType, objectEventValue } from './const';\nimport { getStackFramesFromError } from './stackFrames';\nimport type { ErrorEvent } from './types';\n\nexport function getErrorDetails(evt: ErrorEvent): [string | undefined, string | undefined, ExceptionStackFrame[]] {\n let value: string | undefined;\n let type: string | undefined;\n let stackFrames: ExceptionStackFrame[] = [];\n let isDomErrorRes: boolean | undefined;\n let isEventRes: boolean | undefined;\n\n if (isErrorEvent(evt) && evt.error) {\n value = evt.error.message;\n type = evt.error.name;\n stackFrames = getStackFramesFromError(evt.error);\n } else if ((isDomErrorRes = isDomError(evt)) || isDomException(evt)) {\n const { name, message } = evt;\n\n type = name ?? (isDomErrorRes ? domErrorType : domExceptionType);\n value = message ? `${type}: ${message}` : type;\n } else if (isError(evt)) {\n value = evt.message;\n stackFrames = getStackFramesFromError(evt);\n } else if (isObject(evt) || (isEventRes = isEvent(evt))) {\n type = isEventRes ? evt.constructor.name : undefined;\n value = `${objectEventValue} ${Object.keys(evt)}`;\n }\n\n return [value, type, stackFrames];\n}\n","export const defaultExceptionType = 'Error';\n","import { isString } from '@grafana/faro-core';\nimport type { API, ExceptionStackFrame } from '@grafana/faro-core';\n\nimport { unknownSymbolString } from './const';\nimport { getErrorDetails } from './getErrorDetails';\nimport { getValueAndTypeFromMessage } from './getValueAndTypeFromMessage';\nimport { buildStackFrame } from './stackFrames';\n\nexport function registerOnerror(api: API): void {\n const oldOnerror = window.onerror;\n\n window.onerror = (...args) => {\n try {\n const [evt, source, lineno, colno, error] = args;\n let value: string | undefined;\n let type: string | undefined;\n let stackFrames: ExceptionStackFrame[] = [];\n const eventIsString = isString(evt);\n const initialStackFrame = buildStackFrame(source, unknownSymbolString, lineno, colno);\n\n if (error || !eventIsString) {\n [value, type, stackFrames] = getErrorDetails((error ?? evt) as Error | Event);\n\n if (stackFrames.length === 0) {\n stackFrames = [initialStackFrame];\n }\n } else if (eventIsString) {\n [value, type] = getValueAndTypeFromMessage(evt);\n stackFrames = [initialStackFrame];\n }\n\n if (value) {\n api.pushError(new Error(value), { type, stackFrames });\n }\n } finally {\n oldOnerror?.apply(window, args);\n }\n };\n}\n","import { defaultExceptionType } from '@grafana/faro-core';\n\nimport { valueTypeRegex } from './const';\n\nexport function getValueAndTypeFromMessage(message: string): [string, string] {\n const groups = message.match(valueTypeRegex);\n\n const type = groups?.[1] ?? defaultExceptionType;\n const value = groups?.[2] ?? message;\n\n return [value, type];\n}\n","import { ExceptionStackFrame, isPrimitive } from '@grafana/faro-core';\nimport type { API } from '@grafana/faro-core';\n\nimport { primitiveUnhandledType, primitiveUnhandledValue } from './const';\nimport { getErrorDetails } from './getErrorDetails';\nimport type { ExtendedPromiseRejectionEvent } from './types';\n\nexport function registerOnunhandledrejection(api: API): void {\n window.addEventListener('unhandledrejection', (evt: ExtendedPromiseRejectionEvent) => {\n let error = evt;\n\n if (error.reason) {\n error = evt.reason;\n } else if (evt.detail?.reason) {\n error = evt.detail?.reason;\n }\n\n let value: string | undefined;\n let type: string | undefined;\n let stackFrames: ExceptionStackFrame[] = [];\n if (isPrimitive(error)) {\n value = `${primitiveUnhandledValue} ${String(error)}`;\n type = primitiveUnhandledType;\n } else {\n [value, type, stackFrames] = getErrorDetails(error);\n }\n\n if (value) {\n api.pushError(new Error(value), { type, stackFrames });\n }\n });\n}\n","import { BaseInstrumentation, VERSION } from '@grafana/faro-core';\n\nimport { registerOnerror } from './registerOnerror';\nimport { registerOnunhandledrejection } from './registerOnunhandledrejection';\n\nexport class ErrorsInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-errors';\n readonly version = VERSION;\n\n initialize(): void {\n this.logDebug('Initializing');\n\n registerOnerror(this.api);\n\n registerOnunhandledrejection(this.api);\n }\n}\n","var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTimer.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime {\n executor((metric) => {\n this.pushMeasurement({\n type: 'web-vitals',\n\n values: {\n [indicator]: metric.value,\n },\n });\n });\n });\n }\n}\n","var t,e,n=function(){var t=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(t&&t.responseStart>0&&t.responseStart(e||100)-1)return n||a;if(n=n?a+\">\"+n:a,r.id)break;t=r.parentNode}}catch(t){}return n},o=-1,c=function(){return o},u=function(t){addEventListener(\"pageshow\",(function(e){e.persisted&&(o=e.timeStamp,t(e))}),!0)},s=function(){var t=n();return t&&t.activationStart||0},f=function(t,e){var r=n(),i=\"navigate\";c()>=0?i=\"back-forward-cache\":r&&(document.prerendering||s()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":r.type&&(i=r.type.replace(/_/g,\"-\")));return{name:t,value:void 0===e?-1:e,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},d=function(t,e,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var r=new PerformanceObserver((function(t){Promise.resolve().then((function(){e(t.getEntries())}))}));return r.observe(Object.assign({type:t,buffered:!0},n||{})),r}}catch(t){}},l=function(t,e,n,r){var i,a;return function(o){e.value>=0&&(o||r)&&((a=e.value-(i||0))||void 0===i)&&(i=e.value,e.delta=a,e.rating=function(t,e){return t>e[1]?\"poor\":t>e[0]?\"needs-improvement\":\"good\"}(e.value,n),t(e))}},m=function(t){requestAnimationFrame((function(){return requestAnimationFrame((function(){return t()}))}))},p=function(t){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&t()}))},v=function(t){var e=!1;return function(){e||(t(),e=!0)}},g=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},T=function(t){\"hidden\"===document.visibilityState&&g>-1&&(g=\"visibilitychange\"===t.type?t.timeStamp:0,E())},y=function(){addEventListener(\"visibilitychange\",T,!0),addEventListener(\"prerenderingchange\",T,!0)},E=function(){removeEventListener(\"visibilitychange\",T,!0),removeEventListener(\"prerenderingchange\",T,!0)},S=function(){return g<0&&(g=h(),y(),u((function(){setTimeout((function(){g=h(),y()}),0)}))),{get firstHiddenTime(){return g}}},b=function(t){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return t()}),!0):t()},L=[1800,3e3],C=function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"FCP\"),a=d(\"paint\",(function(t){t.forEach((function(t){\"first-contentful-paint\"===t.name&&(a.disconnect(),t.startTimer.value&&(r.value=i,r.entries=a,n())},c=d(\"layout-shift\",o);c&&(n=l(t,r,M,e.reportAllChanges),p((function(){o(c.takeRecords()),n(!0)})),u((function(){i=0,r=f(\"CLS\",0),n=l(t,r,M,e.reportAllChanges),m((function(){return n()}))})),setTimeout(n,0))})))}((function(e){var n=function(t){var e,n={};if(t.entries.length){var i=t.entries.reduce((function(t,e){return t&&t.value>e.value?t:e}));if(i&&i.sources&&i.sources.length){var o=(e=i.sources).find((function(t){return t.node&&1===t.node.nodeType}))||e[0];o&&(n={largestShiftTarget:a(o.node),largestShiftTime:i.startTime,largestShiftValue:i.value,largestShiftSource:o,largestShiftEntry:i,loadState:r(i.startTime)})}}return Object.assign(t,{attribution:n})}(e);t(n)}),e)},w=function(t,e){C((function(e){var i=function(t){var e={timeToFirstByte:0,firstByteToFCP:t.value,loadState:r(c())};if(t.entries.length){var i=n(),a=t.entries[t.entries.length-1];if(i){var o=i.activationStart||0,u=Math.max(0,i.responseStart-o);e={timeToFirstByte:u,firstByteToFCP:t.value-u,loadState:r(t.entries[0].startTime),navigationEntry:i,fcpEntry:a}}}return Object.assign(t,{attribution:e})}(e);t(i)}),e)},x=0,I=1/0,k=0,A=function(t){t.forEach((function(t){t.interactionId&&(I=Math.min(I,t.interactionId),k=Math.max(k,t.interactionId),x=k?(k-I)/7+1:0)}))},F=function(){return t?x:performance.interactionCount||0},P=function(){\"interactionCount\"in performance||t||(t=d(\"event\",A,{type:\"event\",buffered:!0,durationThreshold:0}))},B=[],O=new Map,R=0,j=function(){var t=Math.min(B.length-1,Math.floor((F()-R)/50));return B[t]},q=[],H=function(t){if(q.forEach((function(e){return e(t)})),t.interactionId||\"first-input\"===t.entryType){var e=B[B.length-1],n=O.get(t.interactionId);if(n||B.length<10||t.duration>e.latency){if(n)t.duration>n.latency?(n.entries=[t],n.latency=t.duration):t.duration===n.latency&&t.startTime===n.entries[0].startTime&&n.entries.push(t);else{var r={id:t.interactionId,latency:t.duration,entries:[t]};O.set(r.id,r),B.push(r)}B.sort((function(t,e){return e.latency-t.latency})),B.length>10&&B.splice(10).forEach((function(t){return O.delete(t.id)}))}}},N=function(t){var e=self.requestIdleCallback||self.setTimeout,n=-1;return t=v(t),\"hidden\"===document.visibilityState?t():(n=e(t),p(t)),n},W=[200,500],z=function(t,e){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(e=e||{},b((function(){var n;P();var r,i=f(\"INP\"),a=function(t){N((function(){t.forEach(H);var e=j();e&&e.latency!==i.value&&(i.value=e.latency,i.entries=e.entries,r())}))},o=d(\"event\",a,{durationThreshold:null!==(n=e.durationThreshold)&&void 0!==n?n:40});r=l(t,i,W,e.reportAllChanges),o&&(o.observe({type:\"first-input\",buffered:!0}),p((function(){a(o.takeRecords()),r(!0)})),u((function(){R=F(),B.length=0,O.clear(),i=f(\"INP\"),r=l(t,i,W,e.reportAllChanges)})))})))},U=[],V=[],_=0,G=new WeakMap,J=new Map,K=-1,Q=function(t){U=U.concat(t),X()},X=function(){K<0&&(K=N(Y))},Y=function(){J.size>10&&J.forEach((function(t,e){O.has(e)||J.delete(e)}));var t=B.map((function(t){return G.get(t.entries[0])})),e=V.length-50;V=V.filter((function(n,r){return r>=e||t.includes(n)}));for(var n=new Set,r=0;r_&&e>a||n.has(t)})),K=-1};q.push((function(t){t.interactionId&&t.target&&!J.has(t.interactionId)&&J.set(t.interactionId,t.target)}),(function(t){var e,n=t.startTime+t.duration;_=Math.max(_,t.processingEnd);for(var r=V.length-1;r>=0;r--){var i=V[r];if(Math.abs(n-i.renderTime)<=8){(e=i).startTime=Math.min(t.startTime,e.startTime),e.processingStart=Math.min(t.processingStart,e.processingStart),e.processingEnd=Math.max(t.processingEnd,e.processingEnd),e.entries.push(t);break}}e||(e={startTime:t.startTime,processingStart:t.processingStart,processingEnd:t.processingEnd,renderTime:n,entries:[t]},V.push(e)),(t.interactionId||\"first-input\"===t.entryType)&&G.set(t,e),X()}));var Z,$,tt,et,nt=function(t,e){for(var n,r=[],i=0;n=U[i];i++)if(!(n.startTime+n.duratione)break;r.push(n)}return r},rt=function(t,n){e||(e=d(\"long-animation-frame\",Q)),z((function(e){var n=function(t){var e=t.entries[0],n=G.get(e),i=e.processingStart,o=n.processingEnd,c=n.entries.sort((function(t,e){return t.processingStart-e.processingStart})),u=nt(e.startTime,o),s=t.entries.find((function(t){return t.target})),f=s&&s.target||J.get(e.interactionId),d=[e.startTime+e.duration,o].concat(u.map((function(t){return t.startTime+t.duration}))),l=Math.max.apply(Math,d),m={interactionTarget:a(f),interactionTargetElement:f,interactionType:e.name.startsWith(\"key\")?\"keyboard\":\"pointer\",interactionTime:e.startTime,nextPaintTime:l,processedEventEntries:c,longAnimationFrameEntries:u,inputDelay:i-e.startTime,processingDuration:o-i,presentationDelay:Math.max(l-o,0),loadState:r(e.startTime)};return Object.assign(t,{attribution:m})}(e);t(n)}),n)},it=[2500,4e3],at={},ot=function(t,e){!function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"LCP\"),a=function(t){e.reportAllChanges||(t=t.slice(-1)),t.forEach((function(t){t.startTime=0&&$1e12?new Date:performance.now())-t.timeStamp;\"pointerdown\"==t.type?function(t,e){var n=function(){mt(t,e),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",n,dt),removeEventListener(\"pointercancel\",r,dt)};addEventListener(\"pointerup\",n,dt),addEventListener(\"pointercancel\",r,dt)}(e,t):mt(e,t)}},gt=function(t){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(e){return t(e,vt,dt)}))},ht=[100,300],Tt=function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"FID\"),a=function(t){t.startTime['context'];\n\n// duplicate keys saved in variables to save bundle size\n// refs: https://github.com/grafana/faro-web-sdk/pull/595#discussion_r1615833968\nconst loadStateKey = 'load_state';\nconst timeToFirstByteKey = 'time_to_first_byte';\n\nexport class WebVitalsWithAttribution {\n constructor(private corePushMeasurement: MeasurementsAPI['pushMeasurement']) {}\n\n initialize(): void {\n this.measureCLS();\n this.measureFCP();\n this.measureFID();\n this.measureINP();\n this.measureLCP();\n this.measureTTFB();\n }\n\n private measureCLS(): void {\n onCLS((metric) => {\n const { loadState, largestShiftValue, largestShiftTime, largestShiftTarget } = metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'largest_shift_value', largestShiftValue);\n this.addIfPresent(values, 'largest_shift_time', largestShiftTime);\n\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n this.addIfPresent(context, 'largest_shift_target', largestShiftTarget);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private measureFCP(): void {\n onFCP((metric) => {\n const { firstByteToFCP, timeToFirstByte, loadState } = metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'first_byte_to_fcp', firstByteToFCP);\n this.addIfPresent(values, timeToFirstByteKey, timeToFirstByte);\n\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private measureFID(): void {\n onFID((metric) => {\n const { eventTime, eventTarget, eventType, loadState } = metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'event_time', eventTime);\n\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, 'event_target', eventTarget);\n this.addIfPresent(context, 'event_type', eventType);\n this.addIfPresent(context, loadStateKey, loadState);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private measureINP(): void {\n onINP((metric) => {\n const {\n interactionTime,\n presentationDelay,\n inputDelay,\n processingDuration,\n nextPaintTime,\n loadState,\n interactionTarget,\n interactionType,\n } = metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'interaction_time', interactionTime);\n this.addIfPresent(values, 'presentation_delay', presentationDelay);\n this.addIfPresent(values, 'input_delay', inputDelay);\n this.addIfPresent(values, 'processing_duration', processingDuration);\n this.addIfPresent(values, 'next_paint_time', nextPaintTime);\n\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, loadStateKey, loadState);\n this.addIfPresent(context, 'interaction_target', interactionTarget);\n this.addIfPresent(context, 'interaction_type', interactionType);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private measureLCP(): void {\n onLCP((metric) => {\n const { elementRenderDelay, resourceLoadDelay, resourceLoadDuration, timeToFirstByte, element } =\n metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'element_render_delay', elementRenderDelay);\n this.addIfPresent(values, 'resource_load_delay', resourceLoadDelay);\n this.addIfPresent(values, 'resource_load_duration', resourceLoadDuration);\n this.addIfPresent(values, timeToFirstByteKey, timeToFirstByte);\n\n const context = this.buildInitialContext(metric);\n this.addIfPresent(context, 'element', element);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private measureTTFB(): void {\n onTTFB((metric) => {\n const { dnsDuration, connectionDuration, requestDuration, waitingDuration, cacheDuration } = metric.attribution;\n\n const values = this.buildInitialValues(metric);\n this.addIfPresent(values, 'dns_duration', dnsDuration);\n this.addIfPresent(values, 'connection_duration', connectionDuration);\n this.addIfPresent(values, 'request_duration', requestDuration);\n this.addIfPresent(values, 'waiting_duration', waitingDuration);\n this.addIfPresent(values, 'cache_duration', cacheDuration);\n\n const context = this.buildInitialContext(metric);\n\n this.pushMeasurement(values, context);\n });\n }\n\n private buildInitialValues(metric: Metric): Values {\n const indicator = metric.name.toLowerCase();\n return {\n [indicator]: metric.value,\n delta: metric.delta,\n };\n }\n\n private buildInitialContext(metric: Metric): Context {\n const navigationEntryId = getItem(NAVIGATION_ID_STORAGE_KEY, webStorageType.session) ?? unknownString;\n\n return {\n id: metric.id,\n rating: metric.rating,\n navigation_type: metric.navigationType,\n navigation_entry_id: navigationEntryId,\n };\n }\n\n private pushMeasurement(values: Values, context: Context): void {\n const type = 'web-vitals';\n this.corePushMeasurement({ type, values }, { context });\n }\n\n private addIfPresent(source: Values | Context, key: string, metric?: number | string): void {\n if (metric) {\n source[key] = metric;\n }\n }\n}\n","import { BaseInstrumentation, VERSION } from '@grafana/faro-core';\n\nimport { WebVitalsBasic } from './webVitalsBasic';\nimport { WebVitalsWithAttribution } from './webVitalsWithAttribution';\n\nexport class WebVitalsInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-web-vitals';\n readonly version = VERSION;\n\n initialize(): void {\n this.logDebug('Initializing');\n const webVitals = this.intializeWebVitalsInstrumentation();\n webVitals.initialize();\n }\n\n private intializeWebVitalsInstrumentation() {\n if (this.config.trackWebVitalsAttribution) {\n return new WebVitalsWithAttribution(this.api.pushMeasurement);\n }\n return new WebVitalsBasic(this.api.pushMeasurement);\n }\n}\n","export function dateNow(): number {\n return Date.now();\n}\n\nexport function getCurrentTimestamp(): string {\n return new Date().toISOString();\n}\n\nexport function timestampToIsoString(value: number): string {\n return new Date(value).toISOString();\n}\n","const alphabet = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789';\n\nexport function genShortID(length = 10): string {\n return Array.from(Array(length))\n .map(() => alphabet[Math.floor(Math.random() * alphabet.length)]!)\n .join('');\n}\n","import { faro } from '@grafana/faro-core';\n\nexport function isSampled(): boolean {\n const sendAllSignals = 1;\n const sessionTracking = faro.config.sessionTracking;\n let samplingRate =\n sessionTracking?.sampler?.({ metas: faro.metas.value }) ?? sessionTracking?.samplingRate ?? sendAllSignals;\n\n if (typeof samplingRate !== 'number') {\n const sendNoSignals = 0;\n samplingRate = sendNoSignals;\n }\n\n return Math.random() < samplingRate;\n}\n","/**\n * Tail based throttle which caches the args of the last call and updates\n */\nexport function throttle void>(callback: T, delay: number) {\n let pause = false;\n let lastPending: Parameters | null;\n\n const timeoutBehavior = () => {\n if (lastPending == null) {\n pause = false;\n return;\n }\n\n callback(...lastPending);\n lastPending = null;\n setTimeout(timeoutBehavior, delay);\n };\n\n return (...args: Parameters) => {\n if (pause) {\n lastPending = args;\n return;\n }\n\n callback(...args);\n pause = true;\n setTimeout(timeoutBehavior, delay);\n };\n}\n","export function getCircularDependencyReplacer() {\n const valueSeen = new WeakSet();\n return function (_key: string | Symbol, value: unknown) {\n if (typeof value === 'object' && value !== null) {\n if (valueSeen.has(value)) {\n return null;\n }\n valueSeen.add(value);\n }\n return value;\n };\n}\n\ntype JSONObject = {\n [key: string]: JSONValue;\n};\ntype JSONArray = JSONValue[] & {};\ntype JSONValue = string | number | boolean | null | JSONObject | JSONArray;\n\nexport function stringifyExternalJson(json: any = {}) {\n return JSON.stringify(json ?? {}, getCircularDependencyReplacer());\n}\n","import type { Config } from '@grafana/faro-core';\n\nexport const STORAGE_KEY = 'com.grafana.faro.session';\nexport const SESSION_EXPIRATION_TIME = 4 * 60 * 60 * 1000; // hrs\nexport const SESSION_INACTIVITY_TIME = 15 * 60 * 1000; // minutes\nexport const STORAGE_UPDATE_DELAY = 1 * 1000; // seconds\n\n/**\n * @deprecated MAX_SESSION_PERSISTENCE_TIME_BUFFER is not used anymore. The constant will be removed in the future\n */\nexport const MAX_SESSION_PERSISTENCE_TIME_BUFFER = 1 * 60 * 1000;\nexport const MAX_SESSION_PERSISTENCE_TIME = SESSION_INACTIVITY_TIME;\n\nexport const defaultSessionTrackingConfig: Config['sessionTracking'] = {\n enabled: true,\n persistent: false,\n maxSessionPersistenceTime: MAX_SESSION_PERSISTENCE_TIME,\n} as const;\n","import { dateNow, faro, genShortID } from '@grafana/faro-core';\n\nimport { isLocalStorageAvailable, isSessionStorageAvailable } from '../../../utils';\n\nimport { isSampled } from './sampling';\nimport { SESSION_EXPIRATION_TIME, SESSION_INACTIVITY_TIME } from './sessionConstants';\nimport type { FaroUserSession } from './types';\n\ntype CreateUserSessionObjectParams = {\n sessionId?: string;\n started?: number;\n lastActivity?: number;\n isSampled?: boolean;\n};\n\nexport function createUserSessionObject({\n sessionId,\n started,\n lastActivity,\n isSampled = true,\n}: CreateUserSessionObjectParams = {}): FaroUserSession {\n const now = dateNow();\n\n const generateSessionId = faro.config?.sessionTracking?.generateSessionId;\n\n if (sessionId == null) {\n sessionId = typeof generateSessionId === 'function' ? generateSessionId() : genShortID();\n }\n\n return {\n sessionId,\n lastActivity: lastActivity ?? now,\n started: started ?? now,\n isSampled: isSampled,\n };\n}\n\nexport function isUserSessionValid(session: FaroUserSession | null): boolean {\n if (session == null) {\n return false;\n }\n\n const now = dateNow();\n const lifetimeValid = now - session.started < SESSION_EXPIRATION_TIME;\n\n if (!lifetimeValid) {\n return false;\n }\n\n const inactivityPeriodValid = now - session.lastActivity < SESSION_INACTIVITY_TIME;\n return inactivityPeriodValid;\n}\n\ntype GetUserSessionUpdaterParams = {\n storeUserSession: (session: FaroUserSession) => void;\n fetchUserSession: () => FaroUserSession | null;\n};\n\ntype UpdateSessionParams = { forceSessionExtend: boolean };\n\nexport function getUserSessionUpdater({\n fetchUserSession,\n storeUserSession,\n}: GetUserSessionUpdaterParams): (options?: UpdateSessionParams) => void {\n return function updateSession({ forceSessionExtend } = { forceSessionExtend: false }): void {\n if (!fetchUserSession || !storeUserSession) {\n return;\n }\n\n const sessionTrackingConfig = faro.config.sessionTracking;\n const isPersistentSessions = sessionTrackingConfig?.persistent;\n\n if ((isPersistentSessions && !isLocalStorageAvailable) || (!isPersistentSessions && !isSessionStorageAvailable)) {\n return;\n }\n\n const sessionFromStorage = fetchUserSession();\n\n if (forceSessionExtend === false && isUserSessionValid(sessionFromStorage)) {\n storeUserSession({ ...sessionFromStorage!, lastActivity: dateNow() });\n } else {\n let newSession = addSessionMetadataToNextSession(\n createUserSessionObject({ isSampled: isSampled() }),\n sessionFromStorage\n );\n\n storeUserSession(newSession);\n\n faro.api?.setSession(newSession.sessionMeta);\n sessionTrackingConfig?.onSessionChange?.(sessionFromStorage?.sessionMeta ?? null, newSession.sessionMeta!);\n }\n };\n}\n\nexport function addSessionMetadataToNextSession(newSession: FaroUserSession, previousSession: FaroUserSession | null) {\n const sessionWithMeta: Required = {\n ...newSession,\n sessionMeta: {\n id: newSession.sessionId,\n attributes: {\n ...faro.config.sessionTracking?.session?.attributes,\n ...(faro.metas.value.session?.attributes ?? {}),\n ...(previousSession != null ? { previousSession: previousSession.sessionId } : {}),\n isSampled: newSession.isSampled.toString(),\n },\n },\n };\n\n return sessionWithMeta;\n}\n","import { faro } from '@grafana/faro-core';\nimport type { Meta } from '@grafana/faro-core';\n\nimport { stringifyExternalJson, throttle } from '../../../utils';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\n\nimport { isSampled } from './sampling';\nimport { STORAGE_KEY, STORAGE_UPDATE_DELAY } from './sessionConstants';\nimport { addSessionMetadataToNextSession, createUserSessionObject, getUserSessionUpdater } from './sessionManagerUtils';\nimport type { FaroUserSession } from './types';\n\nexport class PersistentSessionsManager {\n private static storageTypeLocal = webStorageType.local;\n private updateUserSession: ReturnType;\n\n constructor() {\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: PersistentSessionsManager.fetchUserSession,\n storeUserSession: PersistentSessionsManager.storeUserSession,\n });\n\n this.init();\n }\n\n static removeUserSession() {\n removeItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n }\n\n static storeUserSession(session: FaroUserSession): void {\n setItem(STORAGE_KEY, stringifyExternalJson(session), PersistentSessionsManager.storageTypeLocal);\n }\n\n static fetchUserSession(): FaroUserSession | null {\n const storedSession = getItem(STORAGE_KEY, PersistentSessionsManager.storageTypeLocal);\n\n if (storedSession) {\n return JSON.parse(storedSession) as FaroUserSession;\n }\n\n return null;\n }\n\n updateSession = throttle(() => this.updateUserSession(), STORAGE_UPDATE_DELAY);\n\n private init(): void {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n\n // Users can call the setSession() method, so we need to sync this with the local storage session\n faro.metas.addListener(function syncSessionIfChangedExternally(meta: Meta) {\n const session = meta.session;\n const sessionFromLocalStorage = PersistentSessionsManager.fetchUserSession();\n\n if (session && session.id !== sessionFromLocalStorage?.sessionId) {\n const userSession = addSessionMetadataToNextSession(\n createUserSessionObject({ sessionId: session.id, isSampled: isSampled() }),\n sessionFromLocalStorage\n );\n\n PersistentSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\n","import { faro } from '@grafana/faro-core';\nimport type { Meta } from '@grafana/faro-core';\n\nimport { throttle } from '../../../utils';\nimport { stringifyExternalJson } from '../../../utils/json';\nimport { getItem, removeItem, setItem, webStorageType } from '../../../utils/webStorage';\n\nimport { isSampled } from './sampling';\nimport { STORAGE_KEY, STORAGE_UPDATE_DELAY } from './sessionConstants';\nimport { addSessionMetadataToNextSession, createUserSessionObject, getUserSessionUpdater } from './sessionManagerUtils';\nimport type { FaroUserSession } from './types';\n\nexport class VolatileSessionsManager {\n private static storageTypeSession = webStorageType.session;\n private updateUserSession: ReturnType;\n\n constructor() {\n this.updateUserSession = getUserSessionUpdater({\n fetchUserSession: VolatileSessionsManager.fetchUserSession,\n storeUserSession: VolatileSessionsManager.storeUserSession,\n });\n\n this.init();\n }\n\n static removeUserSession() {\n removeItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\n }\n\n static storeUserSession(session: FaroUserSession): void {\n setItem(STORAGE_KEY, stringifyExternalJson(session), VolatileSessionsManager.storageTypeSession);\n }\n\n static fetchUserSession(): FaroUserSession | null {\n const storedSession = getItem(STORAGE_KEY, VolatileSessionsManager.storageTypeSession);\n\n if (storedSession) {\n return JSON.parse(storedSession) as FaroUserSession;\n }\n\n return null;\n }\n\n updateSession = throttle(() => this.updateUserSession(), STORAGE_UPDATE_DELAY);\n\n private init(): void {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n this.updateSession();\n }\n });\n\n // Users can call the setSession() method, so we need to sync this with the local storage session\n faro.metas.addListener(function syncSessionIfChangedExternally(meta: Meta) {\n const session = meta.session;\n const sessionFromSessionStorage = VolatileSessionsManager.fetchUserSession();\n\n if (session && session.id !== sessionFromSessionStorage?.sessionId) {\n const userSession = addSessionMetadataToNextSession(\n createUserSessionObject({ sessionId: session.id, isSampled: isSampled() }),\n sessionFromSessionStorage\n );\n\n VolatileSessionsManager.storeUserSession(userSession);\n faro.api.setSession(userSession.sessionMeta);\n }\n });\n }\n}\n","import type { Config } from '@grafana/faro-core';\n\nimport { PersistentSessionsManager } from './PersistentSessionsManager';\nimport type { SessionManager } from './types';\nimport { VolatileSessionsManager } from './VolatileSessionManager';\n\nexport function getSessionManagerByConfig(sessionTrackingConfig: Config['sessionTracking']): SessionManager {\n return sessionTrackingConfig?.persistent ? PersistentSessionsManager : VolatileSessionsManager;\n}\n","import {\n BaseInstrumentation,\n dateNow,\n EVENT_SESSION_EXTEND,\n EVENT_SESSION_RESUME,\n EVENT_SESSION_START,\n Meta,\n MetaSession,\n VERSION,\n} from '@grafana/faro-core';\nimport type { Config } from '@grafana/faro-core';\n\nimport type { TransportItem } from '../..';\nimport { createSession } from '../../metas';\n\nimport { type FaroUserSession, getSessionManagerByConfig, isSampled } from './sessionManager';\nimport { PersistentSessionsManager } from './sessionManager/PersistentSessionsManager';\nimport { createUserSessionObject, isUserSessionValid } from './sessionManager/sessionManagerUtils';\nimport type { SessionManager } from './sessionManager/types';\n\ntype LifecycleType = typeof EVENT_SESSION_RESUME | typeof EVENT_SESSION_START;\n\nexport class SessionInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-session';\n readonly version = VERSION;\n\n // previously notified session, to ensure we don't send session start\n // event twice for the same session\n private notifiedSession: MetaSession | undefined;\n\n private sendSessionStartEvent(meta: Meta): void {\n const session = meta.session;\n\n if (session && session.id !== this.notifiedSession?.id) {\n if (this.notifiedSession && this.notifiedSession.id === session.attributes?.['previousSession']) {\n this.api.pushEvent(EVENT_SESSION_EXTEND, {}, undefined, { skipDedupe: true });\n this.notifiedSession = session;\n return;\n }\n\n this.notifiedSession = session;\n // no need to add attributes and session id, they are included as part of meta\n // automatically\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n }\n\n private createInitialSession(\n SessionManager: SessionManager,\n sessionsConfig: Required['sessionTracking']\n ): {\n initialSession: FaroUserSession;\n lifecycleType: LifecycleType;\n } {\n let userSession: FaroUserSession | null = SessionManager.fetchUserSession();\n\n if (sessionsConfig.persistent && sessionsConfig.maxSessionPersistenceTime && userSession) {\n const now = dateNow();\n const shouldClearPersistentSession = userSession.lastActivity < now - sessionsConfig.maxSessionPersistenceTime;\n\n if (shouldClearPersistentSession) {\n PersistentSessionsManager.removeUserSession();\n userSession = null;\n }\n }\n\n let lifecycleType: LifecycleType;\n let initialSession: FaroUserSession;\n\n if (isUserSessionValid(userSession)) {\n const sessionId = userSession?.sessionId;\n\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: userSession!.isSampled || false,\n started: userSession?.started,\n });\n\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: {\n ...sessionsConfig.session?.attributes,\n ...userSession?.sessionMeta?.attributes,\n // For valid resumed sessions we do not want to recalculate the sampling decision on each init phase.\n isSampled: initialSession.isSampled.toString(),\n },\n };\n\n lifecycleType = EVENT_SESSION_RESUME;\n } else {\n const sessionId = sessionsConfig.session?.id ?? createSession().id;\n\n initialSession = createUserSessionObject({\n sessionId,\n isSampled: isSampled(),\n });\n\n initialSession.sessionMeta = {\n id: sessionId,\n attributes: {\n isSampled: initialSession.isSampled.toString(),\n ...sessionsConfig.session?.attributes,\n },\n };\n\n lifecycleType = EVENT_SESSION_START;\n }\n\n return { initialSession, lifecycleType };\n }\n\n private registerBeforeSendHook(SessionManager: SessionManager) {\n const { updateSession } = new SessionManager();\n\n this.transports?.addBeforeSendHooks((item) => {\n updateSession();\n\n const attributes = item.meta.session?.attributes;\n\n if (attributes && attributes?.['isSampled'] === 'true') {\n let newItem: TransportItem = JSON.parse(JSON.stringify(item));\n\n const newAttributes = newItem.meta.session?.attributes;\n delete newAttributes?.['isSampled'];\n\n if (Object.keys(newAttributes ?? {}).length === 0) {\n delete newItem.meta.session?.attributes;\n }\n\n return newItem;\n }\n\n return null;\n });\n }\n\n initialize() {\n this.logDebug('init session instrumentation');\n\n const sessionTrackingConfig = this.config.sessionTracking;\n\n if (sessionTrackingConfig?.enabled) {\n const SessionManager = getSessionManagerByConfig(sessionTrackingConfig);\n\n this.registerBeforeSendHook(SessionManager);\n\n const { initialSession, lifecycleType } = this.createInitialSession(SessionManager, sessionTrackingConfig);\n\n SessionManager.storeUserSession(initialSession);\n\n const initialSessionMeta = initialSession.sessionMeta;\n\n this.notifiedSession = initialSessionMeta;\n this.api.setSession(initialSessionMeta);\n\n if (lifecycleType === EVENT_SESSION_START) {\n this.api.pushEvent(EVENT_SESSION_START, {}, undefined, { skipDedupe: true });\n }\n\n if (lifecycleType === EVENT_SESSION_RESUME) {\n this.api.pushEvent(EVENT_SESSION_RESUME, {}, undefined, { skipDedupe: true });\n }\n }\n\n this.metas.addListener(this.sendSessionStartEvent.bind(this));\n }\n}\n","import { faro, genShortID } from '@grafana/faro-core';\nimport type { MetaSession } from '@grafana/faro-core';\n\nexport function createSession(attributes?: MetaSession['attributes']): MetaSession {\n return {\n id: faro.config?.sessionTracking?.generateSessionId?.() ?? genShortID(),\n attributes,\n };\n}\n","import { BaseInstrumentation, EVENT_VIEW_CHANGED, Meta, MetaView, unknownString, VERSION } from '@grafana/faro-core';\n\n// all this does is send VIEW_CHANGED event\nexport class ViewInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-view';\n readonly version = VERSION;\n\n // previously notified view, to ensure we don't send view changed\n // event twice for the same view\n private notifiedView: MetaView | undefined;\n\n private sendViewChangedEvent(meta: Meta): void {\n const view = meta.view;\n\n if (view && view.name !== this.notifiedView?.name) {\n this.api.pushEvent(\n EVENT_VIEW_CHANGED,\n {\n fromView: this.notifiedView?.name ?? unknownString,\n toView: view.name ?? unknownString,\n },\n undefined,\n { skipDedupe: true }\n );\n\n this.notifiedView = view;\n }\n }\n\n initialize() {\n this.metas.addListener(this.sendViewChangedEvent.bind(this));\n }\n}\n","export const NAVIGATION_ENTRY = 'navigation';\nexport const RESOURCE_ENTRY = 'resource';\n","import { isArray, type PushEventOptions, unknownString } from '@grafana/faro-core';\n\nimport type { CacheType, FaroNavigationTiming, FaroResourceTiming } from './types';\n\nconst w3cTraceparentFormat = /^00-[a-f0-9]{32}-[a-f0-9]{16}-[0-9]{1,2}$/;\n\ntype SpanContext = PushEventOptions['spanContext'];\n\n// Extract traceparent from serverTiming, if present\nexport function getSpanContextFromServerTiming(serverTimings: PerformanceServerTiming[] = []): SpanContext | undefined {\n for (const serverEntry of serverTimings) {\n if (serverEntry.name === 'traceparent') {\n if (!w3cTraceparentFormat.test(serverEntry.description)) {\n continue;\n }\n\n const [, traceId, spanId] = serverEntry.description.split('-');\n if (traceId != null && spanId != null) {\n return { traceId, spanId };\n }\n\n break;\n }\n }\n\n return undefined;\n}\n\nexport function performanceObserverSupported(): boolean {\n return 'PerformanceObserver' in window;\n}\n\nexport function entryUrlIsIgnored(ignoredUrls: Array = [], entryName: string): boolean {\n return ignoredUrls.some((url) => url && entryName.match(url) != null);\n}\n\nexport function onDocumentReady(handleReady: () => void) {\n if (document.readyState === 'complete') {\n handleReady();\n } else {\n const readyStateCompleteHandler = () => {\n if (document.readyState === 'complete') {\n handleReady();\n document.removeEventListener('readystatechange', readyStateCompleteHandler);\n }\n };\n\n document.addEventListener('readystatechange', readyStateCompleteHandler);\n }\n}\n\ntype PerformanceEntryAllowProperties = Record | string | number>;\n\nexport function includePerformanceEntry(\n performanceEntryJSON: Record,\n allowProps: PerformanceEntryAllowProperties = {}\n): boolean {\n for (const [allowPropKey, allowPropValue] of Object.entries(allowProps)) {\n const perfEntryPropVal = performanceEntryJSON[allowPropKey];\n\n if (perfEntryPropVal == null) {\n return false;\n }\n\n if (isArray(allowPropValue)) {\n return allowPropValue.includes(perfEntryPropVal);\n }\n\n return perfEntryPropVal === allowPropValue;\n }\n\n // empty object allows all\n return true;\n}\n\nexport function createFaroResourceTiming(resourceEntryRaw: PerformanceResourceTiming): FaroResourceTiming {\n const {\n connectEnd,\n connectStart,\n decodedBodySize,\n domainLookupEnd,\n domainLookupStart,\n duration,\n encodedBodySize,\n fetchStart,\n initiatorType,\n name,\n nextHopProtocol,\n redirectEnd,\n redirectStart,\n // @ts-expect-error the renderBlockingStatus property is not available in all browsers\n renderBlockingStatus: rbs,\n requestStart,\n responseEnd,\n responseStart,\n // @ts-expect-error the renderBlockingStatus property is not available in all browsers\n responseStatus,\n secureConnectionStart,\n transferSize,\n workerStart,\n } = resourceEntryRaw;\n\n return {\n name: name,\n duration: toFaroPerformanceTimingString(duration),\n tcpHandshakeTime: toFaroPerformanceTimingString(connectEnd - connectStart),\n dnsLookupTime: toFaroPerformanceTimingString(domainLookupEnd - domainLookupStart),\n tlsNegotiationTime: toFaroPerformanceTimingString(requestStart - secureConnectionStart),\n responseStatus: toFaroPerformanceTimingString(responseStatus),\n redirectTime: toFaroPerformanceTimingString(redirectEnd - redirectStart),\n requestTime: toFaroPerformanceTimingString(responseStart - requestStart),\n responseTime: toFaroPerformanceTimingString(responseEnd - responseStart),\n fetchTime: toFaroPerformanceTimingString(responseEnd - fetchStart),\n serviceWorkerTime: toFaroPerformanceTimingString(fetchStart - workerStart),\n decodedBodySize: toFaroPerformanceTimingString(decodedBodySize),\n encodedBodySize: toFaroPerformanceTimingString(encodedBodySize),\n cacheHitStatus: getCacheType(),\n renderBlockingStatus: toFaroPerformanceTimingString(rbs) as FaroResourceTiming['renderBlockingStatus'],\n protocol: nextHopProtocol,\n initiatorType: initiatorType,\n visibilityState: document.visibilityState,\n ttfb: toFaroPerformanceTimingString(responseStart - requestStart),\n\n // TODO: add in future iteration, ideally after nested objects are supported by the collector.\n // serverTiming: resourceEntryRaw.serverTiming,\n };\n\n function getCacheType(): CacheType {\n let cacheType: CacheType = 'fullLoad';\n if (transferSize === 0) {\n if (decodedBodySize > 0) {\n cacheType = 'cache';\n }\n } else {\n if (responseStatus != null) {\n if (responseStatus === 304) {\n cacheType = 'conditionalFetch';\n }\n } else if (encodedBodySize > 0 && transferSize < encodedBodySize) {\n cacheType = 'conditionalFetch';\n }\n }\n return cacheType;\n }\n}\n\nexport function createFaroNavigationTiming(navigationEntryRaw: PerformanceNavigationTiming): FaroNavigationTiming {\n const {\n activationStart,\n domComplete,\n domContentLoadedEventEnd,\n domContentLoadedEventStart,\n domInteractive,\n fetchStart,\n loadEventEnd,\n loadEventStart,\n responseStart,\n type,\n } = navigationEntryRaw;\n\n const parserStart = getDocumentParsingTime();\n\n return {\n ...createFaroResourceTiming(navigationEntryRaw),\n pageLoadTime: toFaroPerformanceTimingString(domComplete - fetchStart),\n documentParsingTime: toFaroPerformanceTimingString(parserStart ? domInteractive - parserStart : null),\n domProcessingTime: toFaroPerformanceTimingString(domComplete - domInteractive),\n domContentLoadHandlerTime: toFaroPerformanceTimingString(domContentLoadedEventEnd - domContentLoadedEventStart),\n onLoadTime: toFaroPerformanceTimingString(loadEventEnd - loadEventStart),\n\n // For navigation entries we can calculate the TTFB based on activationStart. We overwrite the TTFB value coming with the resource entry.\n // For more accuracy on prerendered pages page we calculate relative top the activationStart instead of the start of the navigation.\n // clamp to 0 if activationStart occurs after first byte is received.\n ttfb: toFaroPerformanceTimingString(Math.max(responseStart - (activationStart ?? 0), 0)),\n type: type,\n };\n}\n\nfunction getDocumentParsingTime(): number | null {\n if (performance.timing?.domLoading != null) {\n // the browser is about to start parsing the first received bytes of the HTML document.\n // This property is deprecated but there isn't a really good alternative atm.\n // For now we stick with domLoading and keep researching a better alternative.\n return performance.timing.domLoading - performance.timeOrigin;\n }\n\n return null;\n}\n\nfunction toFaroPerformanceTimingString(v: unknown): string {\n if (v == null) {\n return unknownString;\n }\n\n if (typeof v === 'number') {\n return Math.round(v).toString();\n }\n\n return v.toString();\n}\n","import { faro, genShortID } from '@grafana/faro-core';\nimport type { EventsAPI, PushEventOptions } from '@grafana/faro-core';\n\nimport { RESOURCE_ENTRY } from './performanceConstants';\nimport {\n createFaroResourceTiming,\n entryUrlIsIgnored,\n getSpanContextFromServerTiming,\n includePerformanceEntry,\n} from './performanceUtils';\n\ntype SpanContext = PushEventOptions['spanContext'];\n\nconst DEFAULT_TRACK_RESOURCES = { initiatorType: ['xmlhttprequest', 'fetch'] };\n\nexport function observeResourceTimings(\n faroNavigationId: string,\n pushEvent: EventsAPI['pushEvent'],\n ignoredUrls: Array\n) {\n const trackResources = faro.config.trackResources;\n\n const observer = new PerformanceObserver((observedEntries) => {\n const entries = observedEntries.getEntries();\n\n for (const resourceEntryRaw of entries) {\n if (entryUrlIsIgnored(ignoredUrls, resourceEntryRaw.name)) {\n return;\n }\n\n const resourceEntryJson = resourceEntryRaw.toJSON();\n\n let spanContext: SpanContext = getSpanContextFromServerTiming(resourceEntryJson?.serverTiming);\n\n if (\n (trackResources == null && includePerformanceEntry(resourceEntryJson, DEFAULT_TRACK_RESOURCES)) ||\n trackResources\n ) {\n const faroResourceEntry = {\n ...createFaroResourceTiming(resourceEntryJson),\n faroNavigationId,\n faroResourceId: genShortID(),\n };\n\n pushEvent('faro.performance.resource', faroResourceEntry, undefined, {\n spanContext,\n timestampOverwriteMs: performance.timeOrigin + resourceEntryJson.startTime,\n });\n }\n }\n });\n\n observer.observe({\n type: RESOURCE_ENTRY,\n buffered: true,\n });\n}\n","export enum LogLevel {\n TRACE = 'trace',\n DEBUG = 'debug',\n INFO = 'info',\n LOG = 'log',\n WARN = 'warn',\n ERROR = 'error',\n}\n\nexport const defaultLogLevel = LogLevel.LOG;\n\nexport const allLogLevels: Readonly>> = [\n LogLevel.TRACE,\n LogLevel.DEBUG,\n LogLevel.INFO,\n LogLevel.LOG,\n LogLevel.WARN,\n LogLevel.ERROR,\n] as const;\n","import { BaseInstrumentation, VERSION } from '@grafana/faro-core';\nimport type { Patterns } from '@grafana/faro-core';\n\nimport { getNavigationTimings } from './navigation';\nimport { onDocumentReady, performanceObserverSupported } from './performanceUtils';\nimport { observeResourceTimings } from './resource';\n\nexport class PerformanceInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-performance';\n readonly version = VERSION;\n\n initialize() {\n if (!performanceObserverSupported()) {\n this.logDebug('performance observer not supported. Disable performance instrumentation.');\n return;\n }\n\n onDocumentReady(async () => {\n const pushEvent = this.api.pushEvent;\n const ignoredUrls = this.getIgnoreUrls();\n\n const { faroNavigationId } = await getNavigationTimings(pushEvent, ignoredUrls);\n\n if (faroNavigationId != null) {\n observeResourceTimings(faroNavigationId, pushEvent, ignoredUrls);\n }\n });\n }\n\n private getIgnoreUrls(): Patterns {\n return this.transports.transports?.flatMap((transport) => transport.getIgnoreUrls());\n }\n}\n","import { genShortID, unknownString } from '@grafana/faro-core';\nimport type { EventsAPI, PushEventOptions } from '@grafana/faro-core';\n\nimport { getItem, setItem, webStorageType } from '../../utils';\nimport { NAVIGATION_ID_STORAGE_KEY } from '../instrumentationConstants';\n\nimport { NAVIGATION_ENTRY } from './performanceConstants';\nimport { createFaroNavigationTiming, entryUrlIsIgnored, getSpanContextFromServerTiming } from './performanceUtils';\nimport type { FaroNavigationItem } from './types';\n\ntype SpanContext = PushEventOptions['spanContext'];\n\nexport function getNavigationTimings(\n pushEvent: EventsAPI['pushEvent'],\n ignoredUrls: Array\n): Promise {\n let faroNavigationEntryResolve: (value: FaroNavigationItem) => void;\n const faroNavigationEntryPromise = new Promise((resolve) => {\n faroNavigationEntryResolve = resolve;\n });\n\n const observer = new PerformanceObserver((observedEntries) => {\n const [navigationEntryRaw] = observedEntries.getEntries();\n\n if (navigationEntryRaw == null || entryUrlIsIgnored(ignoredUrls, navigationEntryRaw.name)) {\n return;\n }\n\n const navEntryJson = navigationEntryRaw.toJSON();\n\n let spanContext: SpanContext = getSpanContextFromServerTiming(navEntryJson?.serverTiming);\n\n const faroPreviousNavigationId = getItem(NAVIGATION_ID_STORAGE_KEY, webStorageType.session) ?? unknownString;\n\n const faroNavigationEntry: FaroNavigationItem = {\n ...createFaroNavigationTiming(navEntryJson),\n faroNavigationId: genShortID(),\n faroPreviousNavigationId,\n };\n\n setItem(NAVIGATION_ID_STORAGE_KEY, faroNavigationEntry.faroNavigationId, webStorageType.session);\n\n pushEvent('faro.performance.navigation', faroNavigationEntry, undefined, {\n spanContext,\n timestampOverwriteMs: performance.timeOrigin + navEntryJson.startTime,\n });\n\n faroNavigationEntryResolve(faroNavigationEntry);\n });\n\n observer.observe({\n type: NAVIGATION_ENTRY,\n buffered: true,\n });\n\n return faroNavigationEntryPromise;\n}\n","import type { LogArgsSerializer } from './types';\n\nexport const defaultLogArgsSerializer: LogArgsSerializer = (args) =>\n args\n .map((arg) => {\n try {\n return String(arg);\n } catch (err) {\n return '';\n }\n })\n .join(' ');\n","import { allLogLevels, BaseInstrumentation, defaultLogArgsSerializer, LogLevel, VERSION } from '@grafana/faro-core';\n\nimport type { ConsoleInstrumentationOptions } from './types';\n\nexport class ConsoleInstrumentation extends BaseInstrumentation {\n readonly name = '@grafana/faro-web-sdk:instrumentation-console';\n readonly version = VERSION;\n\n static defaultDisabledLevels: LogLevel[] = [LogLevel.DEBUG, LogLevel.TRACE, LogLevel.LOG];\n\n constructor(private options: ConsoleInstrumentationOptions = {}) {\n super();\n }\n\n initialize() {\n this.logDebug('Initializing\\n', this.options);\n this.options = { ...this.options, ...this.config.consoleInstrumentation };\n\n allLogLevels\n .filter(\n (level) => !(this.options?.disabledLevels ?? ConsoleInstrumentation.defaultDisabledLevels).includes(level)\n )\n .forEach((level) => {\n /* eslint-disable-next-line no-console */\n console[level] = (...args) => {\n try {\n if (level === LogLevel.ERROR && !this.options?.consoleErrorAsLog) {\n this.api.pushError(new Error('console.error: ' + defaultLogArgsSerializer(args)));\n } else {\n this.api.pushLog(args, { level });\n }\n } catch (err) {\n this.logError(err);\n } finally {\n this.unpatchedConsole[level](...args);\n }\n };\n });\n }\n}\n","import type { Instrumentation } from '@grafana/faro-core';\n\nimport {\n ConsoleInstrumentation,\n ErrorsInstrumentation,\n PerformanceInstrumentation,\n SessionInstrumentation,\n ViewInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations';\n\nimport type { GetWebInstrumentationsOptions } from './types';\n\nexport function getWebInstrumentations(options: GetWebInstrumentationsOptions = {}): Instrumentation[] {\n const instrumentations: Instrumentation[] = [\n new ErrorsInstrumentation(),\n new WebVitalsInstrumentation(),\n new SessionInstrumentation(),\n new ViewInstrumentation(),\n ];\n\n if (options.enablePerformanceInstrumentation !== false) {\n // unshift to ensure that initialization starts before the other instrumentations\n instrumentations.unshift(new PerformanceInstrumentation());\n }\n\n if (options.captureConsole !== false) {\n instrumentations.push(\n new ConsoleInstrumentation({\n disabledLevels: options.captureConsoleDisabledLevels,\n })\n );\n }\n\n return instrumentations;\n}\n","import type { BodyKey } from './types';\n\nexport enum TransportItemType {\n EXCEPTION = 'exception',\n LOG = 'log',\n MEASUREMENT = 'measurement',\n TRACE = 'trace',\n EVENT = 'event',\n}\n\nexport const transportItemTypeToBodyKey: Record = {\n [TransportItemType.EXCEPTION]: 'exceptions',\n [TransportItemType.LOG]: 'logs',\n [TransportItemType.MEASUREMENT]: 'measurements',\n [TransportItemType.TRACE]: 'traces',\n [TransportItemType.EVENT]: 'events',\n} as const;\n","import { isArray, isObject, isTypeof } from './is';\n\n// This function was inspired by fast-deep-equal\n// fast-deep-equal has issues with Rollup and also it checks for some edge cases that we don't need\n\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n\n // Using isTypeOf instead of isNumber as isNumber also checks against NaN\n if (isTypeof(a, 'number') && isNaN(a as number)) {\n return isTypeof(b, 'number') && isNaN(b as number);\n }\n\n const aIsArray = isArray(a);\n const bIsArray = isArray(b);\n\n if (aIsArray !== bIsArray) {\n return false;\n }\n\n if (aIsArray && bIsArray) {\n const length = a.length;\n\n if (length !== b.length) {\n return false;\n }\n\n for (let idx = length; idx-- !== 0; ) {\n if (!deepEqual(a[idx], b[idx])) {\n return false;\n }\n }\n\n return true;\n }\n\n const aIsObject = isObject(a);\n const bIsObject = isObject(b);\n\n if (aIsObject !== bIsObject) {\n return false;\n }\n\n if (a && b && aIsObject && bIsObject) {\n const aKeys = Object.keys(a) as Array;\n const bKeys = Object.keys(b);\n const aLength = aKeys.length;\n const bLength = bKeys.length;\n\n if (aLength !== bLength) {\n return false;\n }\n\n for (let aKey of aKeys) {\n if (!bKeys.includes(aKey)) {\n return false;\n }\n }\n\n for (let aKey of aKeys) {\n if (!deepEqual(a[aKey], b[aKey])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItemType } from '../../transports';\nimport type { TransportItem, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, getCurrentTimestamp, isArray, isError, isNull, isObject } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport type { TracesAPI } from '../traces';\n\nimport { defaultExceptionType } from './const';\nimport type { ErrorWithIndexProperties, ExceptionEvent, ExceptionsAPI, StacktraceParser } from './types';\n\nlet stacktraceParser: StacktraceParser | undefined;\n\nexport function initializeExceptionsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): ExceptionsAPI {\n internalLogger.debug('Initializing exceptions API');\n\n let lastPayload: Pick | null = null;\n\n stacktraceParser = config.parseStacktrace ?? stacktraceParser;\n\n const changeStacktraceParser: ExceptionsAPI['changeStacktraceParser'] = (newStacktraceParser) => {\n internalLogger.debug('Changing stacktrace parser');\n\n stacktraceParser = newStacktraceParser ?? stacktraceParser;\n };\n\n const getStacktraceParser: ExceptionsAPI['getStacktraceParser'] = () => stacktraceParser;\n\n const pushError: ExceptionsAPI['pushError'] = (\n error,\n { skipDedupe, stackFrames, type, context, spanContext, timestampOverwriteMs } = {}\n ) => {\n type = type || error.name || defaultExceptionType;\n\n const item: TransportItem = {\n meta: metas.value,\n payload: {\n type,\n value: error.message,\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n context: {\n ...parseCause(error),\n ...(context ?? {}),\n },\n },\n type: TransportItemType.EXCEPTION,\n };\n\n stackFrames = stackFrames ?? (error.stack ? stacktraceParser?.(error).frames : undefined);\n\n if (stackFrames?.length) {\n item.payload.stacktrace = {\n frames: stackFrames,\n };\n }\n\n const testingPayload = {\n type: item.payload.type,\n value: item.payload.value,\n stackTrace: item.payload.stacktrace,\n context: item.payload.context,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping error push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing exception\\n', item);\n\n transports.execute(item);\n };\n\n changeStacktraceParser(config.parseStacktrace);\n\n return {\n changeStacktraceParser,\n getStacktraceParser,\n pushError,\n };\n}\nfunction parseCause(error: ErrorWithIndexProperties): {} | { cause: string } {\n let cause = error.cause;\n\n if (isError(cause)) {\n cause = error.cause.toString();\n // typeof operator on null returns \"object\". This is a well-known quirk in JavaScript and is considered a bug that cannot be fixed due to backward compatibility issues.\n // MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#typeof_null\n } else if (cause !== null && (isObject(error.cause) || isArray(error.cause))) {\n cause = JSON.stringify(error.cause);\n } else if (cause != null) {\n cause = error.cause.toString();\n }\n\n return cause == null ? {} : { cause };\n}\n","import type { Config } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { Transports } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport { initializeEventsAPI } from './events';\nimport { initializeExceptionsAPI } from './exceptions';\nimport { initializeLogsAPI } from './logs';\nimport { initializeMeasurementsAPI } from './measurements';\nimport { initializeMetaAPI } from './meta';\nimport { initializeTracesAPI } from './traces';\nimport type { API } from './types';\n\nexport function initializeAPI(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports\n): API {\n internalLogger.debug('Initializing API');\n\n const tracesApi = initializeTracesAPI(unpatchedConsole, internalLogger, config, metas, transports);\n\n return {\n ...tracesApi,\n ...initializeExceptionsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi),\n ...initializeMetaAPI(unpatchedConsole, internalLogger, config, metas, transports),\n ...initializeLogsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi),\n ...initializeMeasurementsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi),\n ...initializeEventsAPI(unpatchedConsole, internalLogger, config, metas, transports, tracesApi),\n };\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItem, TransportItemType, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\n\nimport type { OTELApi, TraceEvent, TracesAPI } from './types';\n\nexport function initializeTracesAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config,\n metas: Metas,\n transports: Transports\n): TracesAPI {\n internalLogger.debug('Initializing traces API');\n\n let otel: OTELApi | undefined = undefined;\n\n const initOTEL: TracesAPI['initOTEL'] = (trace, context) => {\n internalLogger.debug('Initializing OpenTelemetry');\n\n otel = {\n trace,\n context,\n };\n };\n\n const getTraceContext: TracesAPI['getTraceContext'] = () => {\n const ctx = otel?.trace.getSpanContext(otel.context.active());\n\n return !ctx\n ? undefined\n : {\n trace_id: ctx.traceId,\n span_id: ctx.spanId,\n };\n };\n\n const pushTraces: TracesAPI['pushTraces'] = (payload) => {\n try {\n const item: TransportItem = {\n type: TransportItemType.TRACE,\n payload,\n meta: metas.value,\n };\n\n internalLogger.debug('Pushing trace\\n', item);\n\n transports.execute(item);\n } catch (err) {\n internalLogger.error('Error pushing trace\\n', err);\n }\n };\n\n const getOTEL: TracesAPI['getOTEL'] = () => otel;\n\n const isOTELInitialized: TracesAPI['isOTELInitialized'] = () => !!otel;\n\n return {\n getOTEL,\n getTraceContext,\n initOTEL,\n isOTELInitialized,\n pushTraces,\n };\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Meta, Metas } from '../../metas';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\n\nimport type { MetaAPI } from './types';\n\nexport function initializeMetaAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config,\n metas: Metas,\n _transports: Transports\n): MetaAPI {\n internalLogger.debug('Initializing meta API');\n\n let metaSession: Partial | undefined = undefined;\n let metaUser: Partial | undefined = undefined;\n let metaView: Partial | undefined = undefined;\n\n const setUser: MetaAPI['setUser'] = (user) => {\n if (metaUser) {\n metas.remove(metaUser);\n }\n\n metaUser = {\n user,\n };\n\n metas.add(metaUser);\n };\n\n const setSession: MetaAPI['setSession'] = (session) => {\n if (metaSession) {\n metas.remove(metaSession);\n }\n\n metaSession = {\n session,\n };\n\n metas.add(metaSession);\n };\n\n const getSession: MetaAPI['getSession'] = () => metas.value.session;\n\n const setView: MetaAPI['setView'] = (view) => {\n if (metaView?.view?.name === view?.name) {\n return;\n }\n\n const previousView = metaView;\n\n metaView = {\n view,\n };\n\n metas.add(metaView);\n\n if (previousView) {\n metas.remove(previousView);\n }\n };\n\n const getView: MetaAPI['getView'] = () => metas.value.view;\n\n return {\n setUser,\n resetUser: setUser as MetaAPI['resetUser'],\n setSession,\n resetSession: setSession as MetaAPI['resetSession'],\n getSession,\n setView,\n getView,\n };\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItem, TransportItemType } from '../../transports';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, defaultLogLevel, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport type { TracesAPI } from '../traces';\n\nimport { defaultLogArgsSerializer } from './const';\nimport type { LogEvent, LogsAPI } from './types';\n\nexport function initializeLogsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): LogsAPI {\n internalLogger.debug('Initializing logs API');\n\n let lastPayload: Pick | null = null;\n\n const logArgsSerializer = config.logArgsSerializer ?? defaultLogArgsSerializer;\n\n const pushLog: LogsAPI['pushLog'] = (\n args,\n { context, level, skipDedupe, spanContext, timestampOverwriteMs } = {}\n ) => {\n try {\n const item: TransportItem = {\n type: TransportItemType.LOG,\n payload: {\n message: logArgsSerializer(args),\n level: level ?? defaultLogLevel,\n context: context ?? {},\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n },\n meta: metas.value,\n };\n\n const testingPayload = {\n message: item.payload.message,\n level: item.payload.level,\n context: item.payload.context,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping log push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing log\\n', item);\n\n transports.execute(item);\n } catch (err) {\n internalLogger.error('Error pushing log\\n', err);\n }\n };\n\n return {\n pushLog,\n };\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItem, TransportItemType } from '../../transports';\nimport type { Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport type { TracesAPI } from '../traces';\n\nimport type { MeasurementEvent, MeasurementsAPI } from './types';\n\nexport function initializeMeasurementsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): MeasurementsAPI {\n internalLogger.debug('Initializing measurements API');\n\n let lastPayload: Pick | null = null;\n\n const pushMeasurement: MeasurementsAPI['pushMeasurement'] = (\n payload,\n { skipDedupe, context, spanContext, timestampOverwriteMs } = {}\n ) => {\n try {\n const item: TransportItem = {\n type: TransportItemType.MEASUREMENT,\n payload: {\n ...payload,\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n context: context ?? {},\n },\n meta: metas.value,\n };\n\n const testingPayload = {\n type: item.payload.type,\n values: item.payload.values,\n context: item.payload.context,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping measurement push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing measurement\\n', item);\n\n transports.execute(item);\n } catch (err) {\n internalLogger.error('Error pushing measurement\\n', err);\n }\n };\n\n return {\n pushMeasurement,\n };\n}\n","import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItem, TransportItemType, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport { timestampToIsoString } from '../../utils/date';\nimport type { TracesAPI } from '../traces';\n\nimport type { EventEvent, EventsAPI } from './types';\n\nexport function initializeEventsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): EventsAPI {\n let lastPayload: Pick | null = null;\n\n const pushEvent: EventsAPI['pushEvent'] = (\n name,\n attributes,\n domain,\n { skipDedupe, spanContext, timestampOverwriteMs } = {}\n ) => {\n try {\n const item: TransportItem = {\n meta: metas.value,\n payload: {\n name,\n domain: domain ?? config.eventDomain,\n attributes,\n timestamp: timestampOverwriteMs ? timestampToIsoString(timestampOverwriteMs) : getCurrentTimestamp(),\n trace: spanContext\n ? {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n }\n : tracesApi.getTraceContext(),\n },\n type: TransportItemType.EVENT,\n };\n\n const testingPayload = {\n name: item.payload.name,\n attributes: item.payload.attributes,\n domain: item.payload.domain,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping event push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing event\\n', item);\n\n transports.execute(item);\n } catch (err) {\n internalLogger.error('Error pushing event', err);\n }\n };\n\n return {\n pushEvent,\n };\n}\n","import { defaultUnpatchedConsole } from '../unpatchedConsole';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { noop } from '../utils';\n\nimport { defaultInternalLogger, defaultInternalLoggerLevel, InternalLoggerLevel } from './const';\nimport type { InternalLogger } from './types';\n\nexport function createInternalLogger(\n unpatchedConsole: UnpatchedConsole = defaultUnpatchedConsole,\n internalLoggerLevel = defaultInternalLoggerLevel\n): InternalLogger {\n const internalLogger = defaultInternalLogger;\n\n if (internalLoggerLevel > InternalLoggerLevel.OFF) {\n internalLogger.error =\n internalLoggerLevel >= InternalLoggerLevel.ERROR\n ? function (...args) {\n unpatchedConsole.error(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n\n internalLogger.warn =\n internalLoggerLevel >= InternalLoggerLevel.WARN\n ? function (...args) {\n unpatchedConsole.warn(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n\n internalLogger.info =\n internalLoggerLevel >= InternalLoggerLevel.INFO\n ? function (...args) {\n unpatchedConsole.info(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n\n internalLogger.debug =\n internalLoggerLevel >= InternalLoggerLevel.VERBOSE\n ? function (...args) {\n unpatchedConsole.debug(`${internalLogger.prefix}\\n`, ...args);\n }\n : noop;\n }\n\n return internalLogger;\n}\n","import type { Config } from '../config';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport { defaultInternalLogger } from './const';\nimport { createInternalLogger } from './createInternalLogger';\nimport type { InternalLogger } from './types';\n\nexport let internalLogger: InternalLogger = defaultInternalLogger;\n\nexport function initializeInternalLogger(unpatchedConsole: UnpatchedConsole, config: Config): InternalLogger {\n internalLogger = createInternalLogger(unpatchedConsole, config.internalLoggerLevel);\n\n return internalLogger;\n}\n","import type { TransportItem } from '../';\n\nimport type { BatchExecutorOptions, SendFn } from './types';\n\nconst DEFAULT_SEND_TIMEOUT_MS = 250;\nconst DEFAULT_BATCH_ITEM_LIMIT = 50;\n\nexport class BatchExecutor {\n private readonly itemLimit: number;\n private readonly sendTimeout: number;\n\n private signalBuffer: TransportItem[] = [];\n private sendFn: SendFn;\n private paused: boolean;\n private flushInterval: number;\n\n constructor(sendFn: SendFn, options?: BatchExecutorOptions) {\n this.itemLimit = options?.itemLimit ?? DEFAULT_BATCH_ITEM_LIMIT;\n this.sendTimeout = options?.sendTimeout ?? DEFAULT_SEND_TIMEOUT_MS;\n this.paused = options?.paused || false;\n this.sendFn = sendFn;\n this.flushInterval = -1;\n\n if (!this.paused) {\n this.start();\n }\n\n // Send batched/buffered data when user navigates to new page, switches or closes the tab, minimizes or closes the browser.\n // If on mobile, it also sends data if user switches from the browser to a different app.\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') {\n this.flush();\n }\n });\n }\n\n addItem(item: TransportItem): void {\n if (this.paused) {\n return;\n }\n\n this.signalBuffer.push(item);\n\n if (this.signalBuffer.length >= this.itemLimit) {\n this.flush();\n }\n }\n\n start(): void {\n this.paused = false;\n if (this.sendTimeout > 0) {\n this.flushInterval = window.setInterval(() => this.flush(), this.sendTimeout);\n }\n }\n\n pause(): void {\n this.paused = true;\n clearInterval(this.flushInterval);\n }\n\n groupItems(items: TransportItem[]): TransportItem[][] {\n const itemMap = new Map();\n items.forEach((item) => {\n const metaKey = JSON.stringify(item.meta);\n\n let currentItems = itemMap.get(metaKey);\n if (currentItems === undefined) {\n currentItems = [item];\n } else {\n currentItems = [...currentItems, item];\n }\n\n itemMap.set(metaKey, currentItems);\n });\n return Array.from(itemMap.values());\n }\n\n private flush() {\n if (this.paused || this.signalBuffer.length === 0) {\n return;\n }\n\n const itemGroups = this.groupItems(this.signalBuffer);\n itemGroups.forEach(this.sendFn);\n this.signalBuffer = [];\n }\n}\n","import type { TransportItem } from '..';\nimport type { ExceptionEvent } from '../api';\nimport type { Config, Patterns } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isString } from '../utils';\n\nimport { BatchExecutor } from './batchExecutor';\nimport { TransportItemType } from './const';\nimport type { BeforeSendHook, Transport, Transports } from './types';\n\nexport function shouldIgnoreEvent(patterns: Patterns, msg: string): boolean {\n return patterns.some((pattern) => {\n return isString(pattern) ? msg.includes(pattern) : !!msg.match(pattern);\n });\n}\n\nexport function createBeforeSendHookFromIgnorePatterns(patterns: Patterns): BeforeSendHook {\n return (item: TransportItem) => {\n if (item.type === TransportItemType.EXCEPTION && item.payload) {\n const evt = item.payload as ExceptionEvent;\n const msg = `${evt.type}: ${evt.value}`;\n\n if (shouldIgnoreEvent(patterns, msg)) {\n return null;\n }\n }\n\n return item;\n };\n}\n\nexport function initializeTransports(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas\n): Transports {\n internalLogger.debug('Initializing transports');\n\n const transports: Transport[] = [];\n\n let paused = config.paused;\n\n let beforeSendHooks: BeforeSendHook[] = [];\n\n const add: Transports['add'] = (...newTransports) => {\n internalLogger.debug('Adding transports');\n\n newTransports.forEach((newTransport) => {\n internalLogger.debug(`Adding \"${newTransport.name}\" transport`);\n\n const exists = transports.some((existingTransport) => existingTransport === newTransport);\n\n if (exists) {\n internalLogger.warn(`Transport ${newTransport.name} is already added`);\n\n return;\n }\n\n newTransport.unpatchedConsole = unpatchedConsole;\n newTransport.internalLogger = internalLogger;\n newTransport.config = config;\n newTransport.metas = metas;\n\n transports.push(newTransport);\n });\n };\n\n const addBeforeSendHooks: Transports['addBeforeSendHooks'] = (...newBeforeSendHooks) => {\n internalLogger.debug('Adding beforeSendHooks\\n', beforeSendHooks);\n\n newBeforeSendHooks.forEach((beforeSendHook) => {\n if (beforeSendHook) {\n beforeSendHooks.push(beforeSendHook);\n }\n });\n };\n\n const addIgnoreErrorsPatterns: Transports['addIgnoreErrorsPatterns'] = (...ignoreErrorsPatterns) => {\n internalLogger.debug('Adding ignoreErrorsPatterns\\n', ignoreErrorsPatterns);\n\n ignoreErrorsPatterns.forEach((ignoreErrorsPattern) => {\n if (ignoreErrorsPattern) {\n beforeSendHooks.push(createBeforeSendHookFromIgnorePatterns(ignoreErrorsPattern));\n }\n });\n };\n\n const applyBeforeSendHooks = (items: TransportItem[]): TransportItem[] => {\n let filteredItems = items;\n for (const hook of beforeSendHooks) {\n const modified = filteredItems.map(hook).filter(Boolean) as TransportItem[];\n\n if (modified.length === 0) {\n return [];\n }\n\n filteredItems = modified;\n }\n return filteredItems;\n };\n\n const batchedSend = (items: TransportItem[]) => {\n const filteredItems = applyBeforeSendHooks(items);\n\n if (filteredItems.length === 0) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItems);\n if (transport.isBatched()) {\n transport.send(filteredItems);\n }\n }\n };\n\n const instantSend = (item: TransportItem) => {\n // prevent all beforeSend hooks being executed twice if batching is enabled.\n if (config.batching?.enabled && transports.every((transport) => transport.isBatched())) {\n return;\n }\n\n const [filteredItem] = applyBeforeSendHooks([item]);\n\n if (filteredItem === undefined) {\n return;\n }\n\n for (const transport of transports) {\n internalLogger.debug(`Transporting item using ${transport.name}\\n`, filteredItem);\n if (!transport.isBatched()) {\n transport.send(filteredItem);\n } else if (!config.batching?.enabled) {\n transport.send([filteredItem]);\n }\n }\n };\n\n let batchExecutor: BatchExecutor | undefined;\n\n if (config.batching?.enabled) {\n batchExecutor = new BatchExecutor(batchedSend, {\n sendTimeout: config.batching.sendTimeout,\n itemLimit: config.batching.itemLimit,\n paused,\n });\n }\n\n // Send a signal to the appropriate transports\n //\n // 1. If SDK is paused, early return\n // 2. If batching is not enabled send the signal to all transports\n // instantly.\n // 3i. If batching is enabled, enqueue the signal\n // 3ii. Send the signal instantly to all un-batched transports\n const execute: Transports['execute'] = (item) => {\n if (paused) {\n return;\n }\n\n if (config.batching?.enabled) {\n batchExecutor?.addItem(item);\n }\n\n instantSend(item);\n };\n\n const getBeforeSendHooks: Transports['getBeforeSendHooks'] = () => [...beforeSendHooks];\n\n const isPaused: Transports['isPaused'] = () => paused;\n\n const pause: Transports['pause'] = () => {\n internalLogger.debug('Pausing transports');\n batchExecutor?.pause();\n\n paused = true;\n };\n\n const remove: Transports['remove'] = (...transportsToRemove) => {\n internalLogger.debug('Removing transports');\n\n transportsToRemove.forEach((transportToRemove) => {\n internalLogger.debug(`Removing \"${transportToRemove.name}\" transport`);\n\n const existingTransportIndex = transports.indexOf(transportToRemove);\n\n if (existingTransportIndex === -1) {\n internalLogger.warn(`Transport \"${transportToRemove.name}\" is not added`);\n\n return;\n }\n\n transports.splice(existingTransportIndex, 1);\n });\n };\n\n const removeBeforeSendHooks: Transports['removeBeforeSendHooks'] = (...beforeSendHooksToRemove) => {\n beforeSendHooks.filter((beforeSendHook) => !beforeSendHooksToRemove.includes(beforeSendHook));\n };\n\n const unpause: Transports['unpause'] = () => {\n internalLogger.debug('Unpausing transports');\n batchExecutor?.start();\n\n paused = false;\n };\n\n return {\n add,\n addBeforeSendHooks,\n addIgnoreErrorsPatterns,\n getBeforeSendHooks,\n execute,\n isPaused,\n pause,\n remove,\n removeBeforeSendHooks,\n get transports() {\n return [...transports];\n },\n unpause,\n };\n}\n","import type { Config } from '../config';\n\nimport { defaultUnpatchedConsole } from './const';\nimport type { UnpatchedConsole } from './types';\n\nexport let unpatchedConsole: UnpatchedConsole = defaultUnpatchedConsole;\n\nexport function initializeUnpatchedConsole(config: Config): UnpatchedConsole {\n unpatchedConsole = config.unpatchedConsole ?? unpatchedConsole;\n\n return unpatchedConsole;\n}\n","import { initializeAPI } from './api';\nimport type { Config } from './config';\nimport { initializeInstrumentations, registerInitialInstrumentations } from './instrumentations';\nimport { initializeInternalLogger } from './internalLogger';\nimport { initializeMetas, registerInitialMetas } from './metas';\nimport { isInternalFaroOnGlobalObject, registerFaro } from './sdk';\nimport type { Faro } from './sdk';\nimport { initializeTransports, registerInitialTransports } from './transports';\nimport { initializeUnpatchedConsole } from './unpatchedConsole';\n\nexport function initializeFaro(config: Config): Faro {\n const unpatchedConsole = initializeUnpatchedConsole(config);\n const internalLogger = initializeInternalLogger(unpatchedConsole, config);\n\n if (isInternalFaroOnGlobalObject() && !config.isolate) {\n internalLogger.error(\n 'Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the \"isolate\" property'\n );\n\n return undefined!;\n }\n\n internalLogger.debug('Initializing');\n\n // Initializing the APIs\n const metas = initializeMetas(unpatchedConsole, internalLogger, config);\n const transports = initializeTransports(unpatchedConsole, internalLogger, config, metas);\n const api = initializeAPI(unpatchedConsole, internalLogger, config, metas, transports);\n const instrumentations = initializeInstrumentations(unpatchedConsole, internalLogger, config, metas, transports, api);\n const faro = registerFaro(unpatchedConsole, internalLogger, config, metas, transports, api, instrumentations);\n\n // make sure Faro is initialized before registering default metas, instrumentations, transports etc.\n registerInitialMetas(faro);\n registerInitialTransports(faro);\n registerInitialInstrumentations(faro);\n\n return faro;\n}\n","import type { Config } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\nimport { isFunction } from '../utils';\n\nimport type { Meta, MetaItem, Metas, MetasListener } from './types';\n\nexport function initializeMetas(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n _config: Config\n): Metas {\n let items: MetaItem[] = [];\n let listeners: MetasListener[] = [];\n\n const getValue = () => items.reduce((acc, item) => Object.assign(acc, isFunction(item) ? item() : item), {});\n\n const notifyListeners = () => {\n if (listeners.length) {\n const value = getValue();\n\n listeners.forEach((listener) => listener(value));\n }\n };\n\n const add: Metas['add'] = (...newItems) => {\n internalLogger.debug('Adding metas\\n', newItems);\n\n items.push(...newItems);\n\n notifyListeners();\n };\n\n const remove: Metas['remove'] = (...itemsToRemove) => {\n internalLogger.debug('Removing metas\\n', itemsToRemove);\n\n items = items.filter((currentItem) => !itemsToRemove.includes(currentItem));\n\n notifyListeners();\n };\n\n const addListener: Metas['addListener'] = (listener) => {\n internalLogger.debug('Adding metas listener\\n', listener);\n\n listeners.push(listener);\n };\n\n const removeListener: Metas['removeListener'] = (listener) => {\n internalLogger.debug('Removing metas listener\\n', listener);\n\n listeners = listeners.filter((currentListener) => currentListener !== listener);\n };\n\n return {\n add,\n remove,\n addListener,\n removeListener,\n get value() {\n return getValue();\n },\n };\n}\n","import type { API } from '../api';\nimport type { Config } from '../config';\nimport type { InternalLogger } from '../internalLogger';\nimport type { Metas } from '../metas';\nimport type { Transports } from '../transports';\nimport type { UnpatchedConsole } from '../unpatchedConsole';\n\nimport type { Instrumentation, Instrumentations } from './types';\n\nexport function initializeInstrumentations(\n unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n api: API\n): Instrumentations {\n internalLogger.debug('Initializing instrumentations');\n\n const instrumentations: Instrumentation[] = [];\n\n const add: Instrumentations['add'] = (...newInstrumentations) => {\n internalLogger.debug('Adding instrumentations');\n\n newInstrumentations.forEach((newInstrumentation) => {\n internalLogger.debug(`Adding \"${newInstrumentation.name}\" instrumentation`);\n\n const exists = instrumentations.some(\n (existingInstrumentation) => existingInstrumentation.name === newInstrumentation.name\n );\n\n if (exists) {\n internalLogger.warn(`Instrumentation ${newInstrumentation.name} is already added`);\n\n return;\n }\n\n newInstrumentation.unpatchedConsole = unpatchedConsole;\n newInstrumentation.internalLogger = internalLogger;\n newInstrumentation.config = config;\n newInstrumentation.metas = metas;\n newInstrumentation.transports = transports;\n newInstrumentation.api = api;\n\n instrumentations.push(newInstrumentation);\n\n newInstrumentation.initialize();\n });\n };\n\n const remove: Instrumentations['remove'] = (...instrumentationsToRemove) => {\n internalLogger.debug('Removing instrumentations');\n\n instrumentationsToRemove.forEach((instrumentationToRemove) => {\n internalLogger.debug(`Removing \"${instrumentationToRemove.name}\" instrumentation`);\n\n const existingInstrumentationIndex = instrumentations.reduce(\n (acc, existingInstrumentation, existingTransportIndex) => {\n if (acc === null && existingInstrumentation.name === instrumentationToRemove.name) {\n return existingTransportIndex;\n }\n\n return null;\n },\n null\n );\n\n if (!existingInstrumentationIndex) {\n internalLogger.warn(`Instrumentation \"${instrumentationToRemove.name}\" is not added`);\n\n return;\n }\n\n instrumentations[existingInstrumentationIndex]!.destroy?.();\n\n instrumentations.splice(existingInstrumentationIndex, 1);\n });\n };\n\n return {\n add,\n get instrumentations() {\n return [...instrumentations];\n },\n remove,\n };\n}\n","import type { Faro } from '../sdk';\nimport { getBundleId } from '../utils/sourceMaps';\nimport { VERSION } from '../version';\n\nimport type { Meta } from './types';\n\nexport function registerInitialMetas(faro: Faro): void {\n const initial: Meta = {\n sdk: {\n version: VERSION,\n },\n app: {\n bundleId: faro.config.app.name && getBundleId(faro.config.app.name),\n },\n };\n\n const session = faro.config.sessionTracking?.session;\n if (session) {\n faro.api.setSession(session);\n }\n\n if (faro.config.app) {\n initial.app = { ...faro.config.app, ...initial.app };\n }\n\n if (faro.config.user) {\n initial.user = faro.config.user;\n }\n\n if (faro.config.view) {\n initial.view = faro.config.view;\n }\n\n faro.metas.add(initial, ...(faro.config.metas ?? []));\n}\n","import { globalObject } from '../globalObject';\n\nexport function getBundleId(appName: string): string | undefined {\n return (globalObject as any)?.[`__faroBundleId_${appName}`];\n}\n","import type { Faro } from '../sdk';\n\nexport function registerInitialTransports(faro: Faro): void {\n faro.transports.add(...faro.config.transports);\n faro.transports.addBeforeSendHooks(faro.config.beforeSend);\n faro.transports.addIgnoreErrorsPatterns(faro.config.ignoreErrors);\n}\n","import type { Faro } from '../sdk';\n\nexport function registerInitialInstrumentations(faro: Faro): void {\n faro.instrumentations.add(...faro.config.instrumentations);\n}\n","export const defaultGlobalObjectKey = 'faro';\n\nexport const defaultBatchingConfig = {\n enabled: true,\n sendTimeout: 250,\n itemLimit: 50,\n};\n","import type { ExtendedError, Stacktrace } from '@grafana/faro-core';\n\nimport { getStackFramesFromError } from './getStackFramesFromError';\n\nexport function parseStacktrace(error: ExtendedError): Stacktrace {\n return {\n frames: getStackFramesFromError(error),\n };\n}\n","import { UAParser } from 'ua-parser-js';\n\nimport { unknownString } from '@grafana/faro-core';\nimport type { Meta, MetaBrowser, MetaItem } from '@grafana/faro-core';\n\nexport const browserMeta: MetaItem> = () => {\n const parser = new UAParser();\n const { name, version } = parser.getBrowser();\n const { name: osName, version: osVersion } = parser.getOS();\n const userAgent = parser.getUA();\n const language = navigator.language;\n const mobile = navigator.userAgent.includes('Mobi');\n const brands = getBrands();\n\n return {\n browser: {\n name: name ?? unknownString,\n version: version ?? unknownString,\n os: `${osName ?? unknownString} ${osVersion ?? unknownString}`,\n userAgent: userAgent ?? unknownString,\n language: language ?? unknownString,\n mobile,\n brands: brands ?? unknownString,\n viewportWidth: `${window.innerWidth}`,\n viewportHeight: `${window.innerHeight}`,\n },\n };\n\n function getBrands(): MetaBrowser['brands'] | undefined {\n if (!name || !version) {\n return undefined;\n }\n\n if ('userAgentData' in navigator && navigator.userAgentData) {\n // userAgentData in experimental (only Chrome supports it) thus TS does not ship the respective type declarations\n return (navigator as any).userAgentData.brands;\n }\n\n return undefined;\n }\n};\n","import type { MetaItem } from '@grafana/faro-core';\n\nimport { browserMeta } from './browser';\nimport { pageMeta } from './page';\n\nexport const defaultMetas: MetaItem[] = [browserMeta, pageMeta];\n","import type { Meta, MetaItem } from '@grafana/faro-core';\n\nexport const pageMeta: MetaItem> = () => ({\n page: {\n url: location.href,\n },\n});\n","import type { Meta, MetaItem } from '@grafana/faro-core';\n\ntype K6Properties = {\n testRunId?: string;\n};\n\nexport const k6Meta: MetaItem> = () => {\n const k6Properties: K6Properties = (window as any).k6;\n\n return {\n k6: {\n // we only add the k6 meta if Faro is running inside a k6 environment, so this is always true\n isK6Browser: true,\n ...(k6Properties?.testRunId && { testRunId: k6Properties?.testRunId }),\n },\n };\n};\n","import type { Patterns } from '..';\nimport { BaseExtension } from '../extensions';\n\nimport type { Transport, TransportItem } from './types';\n\nexport abstract class BaseTransport extends BaseExtension implements Transport {\n abstract send(items: TransportItem | TransportItem[]): void | Promise;\n\n isBatched(): boolean {\n return false;\n }\n\n getIgnoreUrls(): Patterns {\n return [];\n }\n}\n","import type { IResourceSpans } from '@opentelemetry/otlp-transformer/build/src/trace/internal-types';\n\nimport type { EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '..';\n\nimport { TransportItemType, transportItemTypeToBodyKey } from './const';\nimport type { TransportBody, TransportItem } from './types';\n\nexport function mergeResourceSpans(traces?: TraceEvent, resourceSpans?: IResourceSpans[]): TraceEvent | undefined {\n if (resourceSpans === undefined) {\n return traces;\n }\n\n if (traces === undefined) {\n return {\n resourceSpans,\n };\n }\n\n const currentResource = traces.resourceSpans?.[0];\n if (currentResource === undefined) {\n return traces;\n }\n\n const currentSpans = currentResource?.scopeSpans || [];\n const newSpans = resourceSpans?.[0]?.scopeSpans || [];\n\n return {\n ...traces,\n resourceSpans: [\n {\n ...currentResource,\n scopeSpans: [...currentSpans, ...newSpans],\n },\n ],\n };\n}\n\nexport function getTransportBody(item: TransportItem[]): TransportBody {\n let body: TransportBody = {\n meta: {},\n };\n\n if (item[0] !== undefined) {\n body.meta = item[0].meta;\n }\n\n item.forEach((currentItem: TransportItem) => {\n switch (currentItem.type) {\n case TransportItemType.LOG:\n case TransportItemType.EVENT:\n case TransportItemType.EXCEPTION:\n case TransportItemType.MEASUREMENT:\n const bk = transportItemTypeToBodyKey[currentItem.type];\n const signals = body[bk] as LogEvent[] | EventEvent[] | ExceptionEvent[] | MeasurementEvent[];\n\n body = {\n ...body,\n [bk]: signals === undefined ? [currentItem.payload] : [...signals, currentItem.payload],\n };\n break;\n case TransportItemType.TRACE:\n body = {\n ...body,\n traces: mergeResourceSpans(body.traces, (currentItem.payload as TraceEvent).resourceSpans),\n };\n break;\n }\n });\n\n return body;\n}\n","import {\n BaseExtension,\n BaseTransport,\n createPromiseBuffer,\n getTransportBody,\n noop,\n PromiseBuffer,\n VERSION,\n} from '@grafana/faro-core';\nimport type { Config, Patterns, TransportItem } from '@grafana/faro-core';\n\nimport { getSessionManagerByConfig } from '../../instrumentations/session/sessionManager';\nimport { getUserSessionUpdater } from '../../instrumentations/session/sessionManager/sessionManagerUtils';\n\nimport type { FetchTransportOptions } from './types';\n\nconst DEFAULT_BUFFER_SIZE = 30;\nconst DEFAULT_CONCURRENCY = 5; // chrome supports 10 total, firefox 17\nconst DEFAULT_RATE_LIMIT_BACKOFF_MS = 5000;\n\nconst BEACON_BODY_SIZE_LIMIT = 60000;\nconst TOO_MANY_REQUESTS = 429;\nconst ACCEPTED = 202;\n\nexport class FetchTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-fetch';\n readonly version = VERSION;\n\n promiseBuffer: PromiseBuffer;\n\n private readonly rateLimitBackoffMs: number;\n private readonly getNow: () => number;\n private disabledUntil: Date = new Date();\n\n constructor(private options: FetchTransportOptions) {\n super();\n\n this.rateLimitBackoffMs = options.defaultRateLimitBackoffMs ?? DEFAULT_RATE_LIMIT_BACKOFF_MS;\n this.getNow = options.getNow ?? (() => Date.now());\n\n this.promiseBuffer = createPromiseBuffer({\n size: options.bufferSize ?? DEFAULT_BUFFER_SIZE,\n concurrency: options.concurrency ?? DEFAULT_CONCURRENCY,\n });\n }\n\n async send(items: TransportItem[]): Promise {\n try {\n if (this.disabledUntil > new Date(this.getNow())) {\n this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`);\n\n return Promise.resolve();\n }\n\n await this.promiseBuffer.add(() => {\n const body = JSON.stringify(getTransportBody(items));\n\n const { url, requestOptions, apiKey } = this.options;\n\n const { headers, ...restOfRequestOptions } = requestOptions ?? {};\n\n let sessionId;\n const sessionMeta = this.metas.value.session;\n if (sessionMeta != null) {\n sessionId = sessionMeta.id;\n }\n\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(headers ?? {}),\n ...(apiKey ? { 'x-api-key': apiKey } : {}),\n ...(sessionId ? { 'x-faro-session-id': sessionId } : {}),\n },\n body,\n keepalive: body.length <= BEACON_BODY_SIZE_LIMIT,\n ...(restOfRequestOptions ?? {}),\n })\n .then(async (response) => {\n if (response.status === ACCEPTED) {\n const sessionExpired = response.headers.get('X-Faro-Session-Status') === 'invalid';\n\n if (sessionExpired) {\n this.extendFaroSession(this.config, this.logDebug);\n }\n }\n\n if (response.status === TOO_MANY_REQUESTS) {\n this.disabledUntil = this.getRetryAfterDate(response);\n this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`);\n }\n\n // read the body so the connection can be closed\n response.text().catch(noop);\n return response;\n })\n .catch((err) => {\n this.logError('Failed sending payload to the receiver\\n', JSON.parse(body), err);\n });\n });\n } catch (err) {\n this.logError(err);\n }\n }\n\n override getIgnoreUrls(): Patterns {\n return ([this.options.url] as Patterns).concat(this.config.ignoreUrls ?? []);\n }\n\n override isBatched(): boolean {\n return true;\n }\n\n private getRetryAfterDate(response: Response): Date {\n const now = this.getNow();\n const retryAfterHeader = response.headers.get('Retry-After');\n\n if (retryAfterHeader) {\n const delay = Number(retryAfterHeader);\n\n if (!isNaN(delay)) {\n return new Date(delay * 1000 + now);\n }\n\n const date = Date.parse(retryAfterHeader);\n\n if (!isNaN(date)) {\n return new Date(date);\n }\n }\n\n return new Date(now + this.rateLimitBackoffMs);\n }\n\n private extendFaroSession(config: Config, logDebug: BaseExtension['logDebug']) {\n const SessionExpiredString = `Session expired`;\n\n const sessionTrackingConfig = config.sessionTracking;\n\n if (sessionTrackingConfig?.enabled) {\n const { fetchUserSession, storeUserSession } = getSessionManagerByConfig(sessionTrackingConfig);\n\n getUserSessionUpdater({ fetchUserSession, storeUserSession })({ forceSessionExtend: true });\n\n logDebug(`${SessionExpiredString} created new session.`);\n } else {\n logDebug(`${SessionExpiredString}.`);\n }\n }\n}\n","export interface PromiseBufferOptions {\n // total number of concurrent tasks\n concurrency: number;\n // total number of uncompleted tasks to accept\n size: number;\n}\n\nexport type PromiseProducer = () => PromiseLike;\n\nexport interface PromiseBuffer {\n add(promiseProducer: PromiseProducer): PromiseLike;\n}\n\nexport interface BufferItem {\n producer: PromiseProducer;\n resolve: (value: T) => void;\n reject: (reason?: any) => void;\n}\n\nexport function createPromiseBuffer(options: PromiseBufferOptions): PromiseBuffer {\n const { size, concurrency } = options;\n\n const buffer: Array> = []; // pending, not-yet-started tasks\n let inProgress = 0; // counter for tasks currently in progress\n\n const work = () => {\n // if there's space for a task and buffer is not empty,\n // take one task from buffer and run it\n if (inProgress < concurrency && buffer.length) {\n const { producer, resolve, reject } = buffer.shift()!;\n\n inProgress++;\n\n producer().then(\n (result) => {\n inProgress--;\n\n work();\n\n resolve(result);\n },\n (reason) => {\n inProgress--;\n\n work();\n\n reject(reason);\n }\n );\n }\n };\n\n const add: PromiseBuffer['add'] = (promiseProducer) => {\n if (buffer.length + inProgress >= size) {\n throw new Error('Task buffer full');\n }\n\n return new Promise((resolve, reject) => {\n buffer.push({\n producer: promiseProducer,\n resolve,\n reject,\n });\n work();\n });\n };\n\n return {\n add,\n };\n}\n","function _writeStringToArray(aString, targetArray, offset) {\n for (let i = 0; i < aString.length; ++i)\n targetArray[offset + i] = aString.charCodeAt(i);\n}\n\nfunction _writeInt16ToArray(aNumber, targetArray, offset) {\n aNumber = Math.floor(aNumber);\n targetArray[offset + 0] = aNumber & 255; // byte 1\n targetArray[offset + 1] = (aNumber >> 8) & 255; // byte 2\n}\n\nfunction _writeInt32ToArray(aNumber, targetArray, offset) {\n aNumber = Math.floor(aNumber);\n targetArray[offset + 0] = aNumber & 255; // byte 1\n targetArray[offset + 1] = (aNumber >> 8) & 255; // byte 2\n targetArray[offset + 2] = (aNumber >> 16) & 255; // byte 3\n targetArray[offset + 3] = (aNumber >> 24) & 255; // byte 4\n}\n\n// Return the bits of the float as a 32-bit integer value. This\n// produces the raw bits; no intepretation of the value is done.\nfunction _floatBits(f) {\n const buf = new ArrayBuffer(4);\n (new Float32Array(buf))[0] = f;\n const bits = (new Uint32Array(buf))[0];\n // Return as a signed integer.\n return bits | 0;\n}\n\nfunction _writeAudioBufferToArray(\n audioBuffer,\n targetArray,\n offset,\n bitDepth\n) {\n let index = 0, channel = 0;\n const length = audioBuffer.length;\n const channels = audioBuffer.numberOfChannels;\n let channelData, sample;\n\n // Clamping samples onto the 16-bit resolution.\n for (index = 0; index < length; ++index) {\n if (index % 3 != 0) continue; // 48000 Hz -> 16000 Hz\n for (channel = 0; channel < channels; ++channel) {\n channelData = audioBuffer.getChannelData(channel);\n\n // Branches upon the requested bit depth\n if (bitDepth === 16) {\n sample = channelData[index] * 32768.0;\n if (sample < -32768)\n sample = -32768;\n else if (sample > 32767)\n sample = 32767;\n _writeInt16ToArray(sample, targetArray, offset);\n offset += 2;\n } else if (bitDepth === 32) {\n // This assumes we're going to out 32-float, not 32-bit linear.\n sample = _floatBits(channelData[index]);\n _writeInt32ToArray(sample, targetArray, offset);\n offset += 4;\n } else {\n // console.log('Invalid bit depth for PCM encoding.');\n return;\n }\n\n }\n }\n}\n\n// Converts the Blob data to AudioBuffer\nasync function _getAudioBuffer(blobData, contextOptions = undefined) {\n let blob = blobData;\n\n if (!(blob instanceof Blob)) blob = new Blob([blobData]);\n\n const url = URL.createObjectURL(blob);\n\n const response = await fetch(url);\n\n const arrayBuffer = await response.arrayBuffer();\n\n const audioContext = new AudioContext(contextOptions);\n\n const audioBuffer = await audioContext.decodeAudioData(arrayBuffer)\n\n return audioBuffer;\n}\n\n/**\n *\n * @param {Blob | Blob[]} blobData - Blob or Blob[] to be converted to audio/wave Blob\n * @param {boolean} as32BitFloat - Convert to 16-bit or 32-bit file, default 16-bit\n * @param {AudioContextOptions} contextOptions - optiosn needs to be used for encoding\n * @returns\n */\nexport async function getWaveBlob(\n blobData, as32BitFloat, contextOptions = undefined\n) {\n const audioBuffer = await _getAudioBuffer(blobData, contextOptions);\n\n // Encoding setup.\n const frameLength = audioBuffer.length;\n const numberOfChannels = audioBuffer.numberOfChannels;\n const sampleRate = 16000; //audioBuffer.sampleRate;\n // sampleRate(48000 Hz) -> 16000 Hz\n const bitsPerSample = as32BitFloat ? 32 : 16;\n const bytesPerSample = bitsPerSample / 8;\n const byteRate = sampleRate * numberOfChannels * bitsPerSample / 8;\n const blockAlign = numberOfChannels * bitsPerSample / 8;\n const wavDataByteLength = frameLength * numberOfChannels * bytesPerSample;\n const headerByteLength = 44;\n const totalLength = headerByteLength + wavDataByteLength;\n const waveFileData = new Uint8Array(totalLength);\n const subChunk1Size = 16;\n const subChunk2Size = wavDataByteLength;\n const chunkSize = 4 + (8 + subChunk1Size) + (8 + subChunk2Size);\n\n _writeStringToArray('RIFF', waveFileData, 0);\n _writeInt32ToArray(chunkSize, waveFileData, 4);\n _writeStringToArray('WAVE', waveFileData, 8);\n _writeStringToArray('fmt ', waveFileData, 12);\n\n // SubChunk1Size (4)\n _writeInt32ToArray(subChunk1Size, waveFileData, 16);\n // AudioFormat (2): 3 means 32-bit float, 1 means integer PCM.\n _writeInt16ToArray(as32BitFloat ? 3 : 1, waveFileData, 20);\n // NumChannels (2)\n _writeInt16ToArray(numberOfChannels, waveFileData, 22);\n // SampleRate (4)\n _writeInt32ToArray(sampleRate, waveFileData, 24);\n // ByteRate (4)\n _writeInt32ToArray(byteRate, waveFileData, 28);\n // BlockAlign (2)\n _writeInt16ToArray(blockAlign, waveFileData, 32);\n // BitsPerSample (4)\n _writeInt32ToArray(bitsPerSample, waveFileData, 34);\n _writeStringToArray('data', waveFileData, 36);\n // SubChunk2Size (4)\n _writeInt32ToArray(subChunk2Size, waveFileData, 40);\n\n // Write actual audio data starting at offset 44.\n _writeAudioBufferToArray(audioBuffer, waveFileData, 44, bitsPerSample);\n\n return new Blob([waveFileData], {\n type: 'audio/wav'\n });\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport {useEffect, useRef, useState} from \"react\";\nimport logo from \"./assets/images/logo.png\";\nimport fabriceAI from \"./assets/images/fabrice-ai-logo.svg\";\nimport newChat from \"./assets/images/new-chat.svg\";\nimport toggleNavbar from \"./assets/images/sidebar-toggle.svg\";\nimport packageJson from \"../package.json\";\nimport mic from \"./assets/images/mic.svg\";\nimport send from \"./assets/images/send.svg\";\nimport sendDisabled from './assets/images/send-disabled.svg';\nimport scrollDown from './assets/images/scroll-down.svg';\nimport userChat from './assets/images/user-chat.svg';\nimport aiChat from './assets/images/ai-chat.svg';\nimport audioWave from './assets/images/audio-wave.gif';\nimport {usePersistedState} from \"./app/hooks\";\nimport {categorizeAndGroupData, extractLastCompleteObject, parseMetadata, separateObjects} from \"./utils/Utils\";\nimport Markdown from \"react-markdown\";\nimport {LazyLoadImage} from \"react-lazy-load-image-component\";\nimport DeviceUUID from 'device-uuid';\nimport {AvatarState, ChatData, ChatMode, Language, RequestBody} from \"./types/Types\";\nimport {ChatModeSwitch} from \"./components/ChatModeSwitch\";\nimport {useVoiceVisualizer, VoiceVisualizer} from \"react-voice-visualizer\";\nimport {AiFillCheckCircle, AiFillCloseCircle} from \"react-icons/ai\";\nimport {ToastContainer} from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport {AvatarComponent, AvatarComponentRef} from \"./components/AvatarComponent\";\nimport useCurrentHeight from \"./hooks/useCurrentHeight\";\nimport {languages, LanguageSelection} from \"./components/LanguageSelection\";\nimport listening from \"./assets/images/listening.gif\";\nimport processing from \"./assets/images/processing.gif\";\nimport speaking from \"./assets/images/speaking.gif\";\nimport {faro} from \"@grafana/faro-react\";\nimport {getWaveBlob} from \"./components/wavBlob\";\n\n\n\nfunction App() {\n const questions = ['What is FJ Labs\\' purpose?', 'What does FJ Labs\\' invest in?', 'Why is Fabrice optimistic about climate change?',\n 'What are the biggest mistakes marketplace founders make?', 'How to make the most important decisions in your life?', 'How to live asset light?',\n 'What are fair Seed & Series A valuations?', 'What is the key to happiness?'];\n const deviceId = new DeviceUUID.DeviceUUID().get();\n const [openNavbar, setOpenNavbar] = useState(true);\n const [prompt, setPrompt] = useState(\"\");\n const [showScrollButton, setShowScrollButton] = useState(false);\n const [loading, setLoading] = useState(false);\n const windowHeight = useCurrentHeight();\n const scrollableRef = useRef(null);\n const dataStreamController = useRef(null);\n const metaDataController = useRef(null);\n const transcriptDataController = useRef(null);\n const defaultChat: ChatData = {\n selected: 1,\n chats: [\n {\n id: 1,\n createdAt: new Date().toISOString(),\n messages: []\n }\n ]\n }\n const [chatData, setChatData] = usePersistedState(\"chatData\", defaultChat);\n const selectedChat = chatData.chats.find((chat) => chat.id === chatData.selected);\n const [chatMode, setChatMode] = useState(ChatMode.TEXT);\n const [loadingMessage, setLoadingMessage] = useState('');\n const [dataStreamLoading, setDataStreamLoading] = useState(false);\n\n const recorderControls = useVoiceVisualizer();\n const {\n recordedBlob,\n error,\n startRecording,\n stopRecording,\n isRecordingInProgress,\n clearCanvas,\n recordingTime\n\n } = recorderControls;\n const [transcripting, setTranscripting] = useState(false);\n const [greet, setGreet] = useState(true);\n const avatarComponentRef = useRef(null);\n const [avatarState, setAvatarState] = useState(AvatarState.IDLE);\n const [selectedLanguage, setSelectedLanguage] = useState(languages[0]);\n\n\n\n const submitPrompt = (async (prompt: string) => {\n scrollToBottom();\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n const selectedChat = newChatData.chats.find((chat) => chat.id === newChatData.selected);\n if (selectedChat) {\n selectedChat.messages.push(\n {\n byUser: true,\n message: prompt,\n topSources: [],\n status: 'complete'\n },\n {\n byUser: false,\n message: '',\n topSources: [],\n status: 'incomplete'\n });\n }\n\n return newChatData;\n });\n\n fetchApis(prompt);\n });\n\n const updateChatsWithStatus = (status: string) => {\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n const selectedChat = newChatData.chats.find((chat) => chat.id === newChatData.selected);\n if (selectedChat) {\n const lastMessageIndex = selectedChat.messages.length - 1;\n if (lastMessageIndex >= 0) {\n selectedChat.messages[lastMessageIndex].status = status;\n }\n }\n return newChatData;\n });\n }\n\n const fetchApis = async (prompt: string) => {\n setLoading(true);\n const request = {\n query: prompt,\n deviceId: deviceId,\n tokenId: selectedChat?.tokenId ?? deviceId + '-' + Date.now(),\n threadId: selectedChat?.threadId\n };\n try {\n await Promise.all([fetchDataStream(request), fetchMetaData(request)])\n } catch (error: any) {\n console.log(error);\n if (error.name === 'AbortError') {\n updateChatsWithStatus('abort');\n faro.api.pushError(error, {\n type: 'network',\n context: {\n message: \"Request aborted\"\n }\n });\n } else {\n updateChatsWithStatus('error');\n }\n } finally {\n setLoading(false);\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n const selectedChat = newChatData.chats.find((chat) => chat.id === newChatData.selected);\n if (selectedChat) {\n const lastMessageIndex = selectedChat.messages.length - 1;\n if (lastMessageIndex >= 0 && selectedChat.messages[lastMessageIndex].status === 'incomplete') {\n selectedChat.messages[lastMessageIndex].status = 'complete';\n }\n }\n return newChatData;\n });\n }\n }\n\n const fetchDataStream = async (requestBody: RequestBody) => {\n setDataStreamLoading(true);\n dataStreamController.current = new AbortController();\n const response = await fetch(`${process.env.REACT_APP_BASE_URL}/stream`, {\n signal: dataStreamController.current?.signal,\n method: \"POST\", headers: {\n \"Content-Type\": \"application/json\",\n }, body: JSON.stringify(requestBody),\n });\n if (!response.ok || !response.body) return;\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n while (true) {\n const {done, value} = await reader?.read();\n if (done || dataStreamController.current?.signal?.aborted) {\n break;\n }\n const chunk = decoder.decode(value, {stream: true});\n const objects = separateObjects(chunk);\n const threadId = objects[0].threadId;\n const message = objects.map(value => value.response).join('');\n setLoadingMessage((prevState) => prevState + message);\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n const selectedChat = newChatData.chats.find((chat) => chat.id === newChatData.selected);\n if (selectedChat) {\n if (threadId) selectedChat.threadId = threadId;\n if (!selectedChat.tokenId) selectedChat.tokenId = requestBody.tokenId;\n const lastMessageIndex = selectedChat.messages.length - 1;\n if (lastMessageIndex >= 0) {\n selectedChat.messages[lastMessageIndex].message += message;\n }\n }\n return newChatData;\n });\n }\n setDataStreamLoading(false);\n }\n\n const fetchMetaData = async (requestBody: RequestBody) => {\n let buffer = '';\n metaDataController.current = new AbortController();\n const response = await fetch(`${process.env.REACT_APP_BASE_URL}/metadataStream`, {\n signal: metaDataController.current?.signal,\n method: \"POST\", headers: {\n \"Content-Type\": \"application/json\",\n }, body: JSON.stringify(requestBody), // body data type must match \"Content-Type\" header\n });\n if (!response.ok || !response.body) return;\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n\n let lastCompleteObjects: any[] | null = [];\n while (true) {\n const {done, value} = await reader.read();\n if (done || metaDataController.current?.signal.aborted) break;\n const chunk = decoder.decode(value, {stream: true});\n buffer += separateObjects(chunk).filter(v => v.response !== '```' && v.response !== 'json').map(value => value.response).join('');\n const lastObjects = extractLastCompleteObject(buffer);\n if (lastObjects && lastObjects.length !== lastCompleteObjects?.length &&\n !lastCompleteObjects.some(value1 => lastObjects[lastObjects.length - 1]?.link === value1.link)) {\n lastCompleteObjects = lastObjects;\n console.log('lastCompleteObject', lastCompleteObjects);\n const parsedMetadata = await parseMetadata([lastCompleteObjects[lastCompleteObjects.length - 1]]);\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n const selectedChat = newChatData.chats.find((chat) => chat.id === newChatData.selected);\n if (selectedChat) {\n const lastMessageIndex = selectedChat.messages.length - 1;\n if (lastMessageIndex >= 0) {\n selectedChat.messages[lastMessageIndex].topSources.push(parsedMetadata);\n }\n }\n return newChatData;\n });\n }\n }\n }\n\n const stopApis = () => {\n if (isRecordingInProgress) stopRecording();\n if (loading) {\n dataStreamController.current?.abort();\n metaDataController.current?.abort();\n }\n if (transcripting) transcriptDataController.current?.abort();\n }\n\n const switchChat = (id: number) => {\n if (isRecordingInProgress) stopRecording();\n stopApis();\n setGreet(true);\n setShowScrollButton(false);\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n newChatData.selected = id;\n return newChatData;\n });\n };\n\n const startNewChat = () => {\n if (isRecordingInProgress) stopRecording();\n stopApis();\n setGreet(true);\n setShowScrollButton(false);\n setChatData((prevChatData) => {\n const newChatData: ChatData = JSON.parse(JSON.stringify(prevChatData));\n newChatData.chats.push({\n id: newChatData.chats.length + 1,\n createdAt: new Date().toISOString(),\n messages: []\n });\n newChatData.selected = newChatData.chats.length;\n return newChatData;\n });\n }\n\n useEffect(() => {\n\n console.log('recordingTime', recordingTime);\n if (recordingTime >= 240000) {\n stopRecording();\n\n }\n }, [recordingTime]);\n\n useEffect(() => {\n console.log('recordedBlob', recordedBlob);\n\n const transcriptVoice = async () => {\n if (!recordedBlob) return;\n setTranscripting(true);\n const mWavBlob = await getWaveBlob(recordedBlob, false);\n // await sleep(3000);\n transcriptDataController.current = new AbortController();\n const formData = new FormData();\n formData.append(\"file\", mWavBlob, `${new Date().toISOString().replace(/[:.]/g, '-')}.wav`);\n formData.append(\"deviceId\", deviceId);\n formData.append(\"tokenId\", selectedChat?.tokenId ?? deviceId + '-' + Date.now());\n try {\n const textResponse = await fetch(`${process.env.REACT_APP_BASE_URL}/uploadAudio`, {\n signal: transcriptDataController.current?.signal,\n method: \"POST\",\n body: formData\n });\n const textJson = await textResponse.json();\n clearCanvas();\n submitPrompt(textJson.transcription_text);\n scrollToBottom();\n } catch (error) {\n\n } finally {\n setTranscripting(false);\n }\n\n\n }\n if (recordedBlob && !isRecordingInProgress) {\n transcriptVoice();\n }\n }, [isRecordingInProgress, recordedBlob]);\n\n const handleScroll = () => {\n const scrollable = scrollableRef.current;\n if (!scrollable) return;\n\n const isAtBottom =\n scrollable.scrollHeight - scrollable.scrollTop === scrollable.clientHeight;\n setShowScrollButton(!isAtBottom);\n };\n\n const scrollToBottom = () => {\n scrollableRef.current?.scrollTo({\n top: scrollableRef.current.scrollHeight,\n behavior: \"smooth\",\n });\n };\n\n useEffect(() => {\n const scrollable = scrollableRef.current;\n scrollable?.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n scrollable?.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n /* return (\n
\n
1
\n
2
\n
\n ); */\n\n\n return (\n\n
\n {\n openNavbar\n &&
setOpenNavbar(!openNavbar)}/>\n }\n \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n
\n
\n
    \n {\n Object.entries(categorizeAndGroupData(chatData.chats)).reverse().map(([group, items], index) => (\n
  • \n

    {group}

    \n
      \n {\n items.reverse().map((chat) => (\n
    • switchChat(chat.id)}>{chat.messages?.at(0)?.message ?? \"New Chat\"}\n
    • \n ))\n }\n
    \n
  • \n ))\n }\n
\n
\n v{packageJson.version}\n
\n
\n
\n {\n !(chatMode === ChatMode.TEXT || chatMode === ChatMode.PITCH_FABRICE) ?\n
\n {\n setLoadingMessage('');\n }}\n updateUserMessage={submitPrompt}\n greet={greet}\n setGreet={setGreet}\n avatarState={avatarState}\n setAvatarState={setAvatarState}\n language={selectedLanguage}\n />\n
:
\n {(selectedChat?.messages.length ?? 0) > 0 ? <>{\n selectedChat?.messages.map((message, index) => (\n
\n
{message.byUser\n
{\n message.byUser || message.message.length > 0 ? (\n {message.message.replace(\"NO_RELEVANT_DATA\", \"\")}\n ) : (\n
\n
\n
\n
\n
\n )\n }
\n
\n {chatMode !== ChatMode.PITCH_FABRICE && !message.byUser && <>\n {message.topSources.length > 0 && !message.message?.includes(\"NO_RELEVANT_DATA\") &&\n
\n

Top\n Sources

\n \n {\n message.topSources?.map((source, index) => (\n \n ))\n }\n {loading && index === selectedChat.messages.length - 1 &&\n \n
\n
\n
}\n
\n }\n {message.status !== \"complete\" && !loading && }\n }\n\n \n ))\n } : \n {((chatMode === ChatMode.PITCH_FABRICE) ? [\n \"What are fair Seed & Series A valuations?\", \"What are the biggest mistakes marketplace founders make?\"\n ] : questions).map((question, index) => (\n
submitPrompt(question)}>\n {question}\n
\n ))}\n }\n \n }\n\n \n {\n showScrollButton &&\n \"scrollDown\"\n\n }\n {/*\n {chatMode === ChatMode.LIVE_CHAT &&\n
\n {\n setSelectedLanguage(value);\n setGreet(true);\n }}/>\n
}\n
{\n setChatMode(chatMode);\n setShowScrollButton(false);\n }}/>
\n {!(chatMode === ChatMode.TEXT || chatMode === ChatMode.PITCH_FABRICE) &&\n
\n \n
}\n */}\n\n\n \n
\n {\n isRecordingInProgress || transcripting ?\n
\n {\n isRecordingInProgress &&
\n {\n if (isRecordingInProgress) stopRecording();\n clearCanvas();\n }}/>\n \n {\n stopRecording();\n }}/>\n
\n }\n {\n transcripting &&
\n \"transcripting\"/\n

Transcribing...

\n
\n }\n
\n :\n <>\n\n {\n event.preventDefault();\n event.stopPropagation();\n if (prompt.length > 0 && !loading) {\n submitPrompt(prompt);\n setPrompt(\"\");\n }\n }}>\n setPrompt(e.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n if (prompt.length > 0 && !loading) {\n submitPrompt(prompt);\n setPrompt(\"\");\n }\n }\n }}/>\n \n
\n \n \n Fabrice AI is an experimental tool\n and\n may be\n inaccurate at times.\n {' '}\n Read Disclaimers\n \n \n }\n\n
\n \n
\n \n \n \n\n );\n\n}\n\nexport default App;\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport type { RootState, AppDispatch } from './store';\nimport { useEffect, useState } from 'react';\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n\nexport const usePersistedState = (key: string, initialState: T) => {\n const [value, setValue] = useState(() => {\n const jsonValue = localStorage.getItem(key);\n if (jsonValue != null) return JSON.parse(jsonValue);\n if (typeof initialState === 'function') return initialState();\n return initialState;\n });\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n return [value, setValue] as const;\n};\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how
works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach((key) => deletedFetchers.delete(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n\n // If we opted into the flag we can clear this now since we're calling\n // deleteFetcher() at the end of updateState() and we've already handed the\n // deleted fetcher keys off to the data layer.\n // If not, we're eagerly calling deleteFetcher() and we need to keep this\n // Set populated until the next updateState call, and we'll clear\n // `deletedFetchers` then\n if (future.v7_fetcherPersist) {\n deletedFetchers.delete(key);\n }\n\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n if (!future.v7_fetcherPersist) {\n deleteFetcher(key);\n }\n } else {\n activeFetchers.set(key, count);\n }\n\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\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/// \nimport { Context, ContextManager, ROOT_CONTEXT } from '@opentelemetry/api';\nimport { TargetWithEvents } from './types';\nimport { isListenerObject } from './util';\n\n/* Key name to be used to save a context reference in Zone */\nconst ZONE_CONTEXT_KEY = 'OT_ZONE_CONTEXT';\n\n/**\n * ZoneContextManager\n * This module provides an easy functionality for tracing action between asynchronous operations in web.\n * It was not possible with standard [StackContextManager]{@link https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-sdk-trace-web/src/StackContextManager.ts}.\n * It heavily depends on [zone.js]{@link https://www.npmjs.com/package/zone.js}.\n * It stores the information about context in zone. Each Context will have always new Zone;\n * It also supports binding a certain Span to a target that has \"addEventListener\" and \"removeEventListener\".\n * When this happens a new zone is being created and the provided Span is being assigned to this zone.\n */\nexport class ZoneContextManager implements ContextManager {\n /**\n * whether the context manager is enabled or not\n */\n private _enabled = false;\n\n /**\n * Helps to create a unique name for the zones - part of zone name\n */\n private _zoneCounter = 0;\n\n /**\n * Returns the active context from certain zone name\n * @param activeZone\n */\n private _activeContextFromZone(activeZone: Zone | undefined): Context {\n return (activeZone && activeZone.get(ZONE_CONTEXT_KEY)) || ROOT_CONTEXT;\n }\n\n /**\n * @param context A context (span) to be executed within target function\n * @param target Function to be executed within the context\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _bindFunction(context: Context, target: T): T {\n const manager = this;\n const contextWrapper = function (this: unknown, ...args: unknown[]) {\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 return contextWrapper as unknown as T;\n }\n\n /**\n * @param context A context (span) to be bind to target\n * @param obj target object on which the listeners will be patched\n */\n private _bindListener(context: Context, obj: T): T {\n const target = obj as unknown as TargetWithEvents;\n if (target.__ot_listeners !== undefined) {\n return obj;\n }\n target.__ot_listeners = {};\n\n if (typeof target.addEventListener === 'function') {\n target.addEventListener = this._patchAddEventListener(\n target,\n target.addEventListener,\n context\n );\n }\n\n if (typeof target.removeEventListener === 'function') {\n target.removeEventListener = this._patchRemoveEventListener(\n target,\n target.removeEventListener\n );\n }\n\n return obj;\n }\n\n /**\n * Creates a new unique zone name\n */\n private _createZoneName() {\n this._zoneCounter++;\n const random = Math.random();\n return `${this._zoneCounter}-${random}`;\n }\n\n /**\n * Creates a new zone\n * @param zoneName zone name\n * @param context A context (span) to be bind with Zone\n */\n private _createZone(zoneName: string, context: unknown): Zone {\n return Zone.current.fork({\n name: zoneName,\n properties: {\n [ZONE_CONTEXT_KEY]: context,\n },\n });\n }\n\n /**\n * Returns the active zone\n */\n private _getActiveZone(): Zone | undefined {\n return Zone.current;\n }\n\n /**\n * Patches addEventListener method\n * @param target any target that has \"addEventListener\" method\n * @param original reference to the patched method\n * @param [context] context to be bind to the listener\n */\n private _patchAddEventListener(\n target: TargetWithEvents,\n original: NonNullable,\n context: Context\n ) {\n const contextManager = this;\n\n return function (this: TargetWithEvents, event, listener, opts) {\n if (target.__ot_listeners === undefined) {\n target.__ot_listeners = {};\n }\n let listeners = target.__ot_listeners[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n target.__ot_listeners[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 return original.call(this, event, patchedListener, opts);\n } as TargetWithEvents['addEventListener'];\n }\n\n /**\n * Patches removeEventListener method\n * @param target any target that has \"removeEventListener\" method\n * @param original reference to the patched method\n */\n private _patchRemoveEventListener(\n target: TargetWithEvents,\n original: NonNullable\n ) {\n return function (this: TargetWithEvents, event, listener) {\n if (\n target.__ot_listeners === undefined ||\n target.__ot_listeners[event] === undefined\n ) {\n return original.call(this, event, listener);\n }\n const events = target.__ot_listeners[event];\n const patchedListener = events.get(listener);\n events.delete(listener);\n return original.call(this, event, patchedListener || listener);\n } as TargetWithEvents['removeEventListener'];\n }\n\n /**\n * Returns the active context\n */\n active(): Context {\n if (!this._enabled) {\n return ROOT_CONTEXT;\n }\n const activeZone = this._getActiveZone();\n\n const active = this._activeContextFromZone(activeZone);\n if (active) {\n return active;\n }\n\n return ROOT_CONTEXT;\n }\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: Context, target: T | TargetWithEvents): T {\n // if no specific context to propagate is given, we use the current one\n if (context === undefined) {\n context = this.active();\n }\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n } else if (isListenerObject(target)) {\n this._bindListener(context, target);\n }\n return target as unknown as T;\n }\n\n /**\n * Disable the context manager (clears all the contexts)\n */\n disable(): this {\n this._enabled = false;\n return this;\n }\n\n /**\n * Enables the context manager and creates a default(root) context\n */\n enable(): this {\n this._enabled = true;\n return this;\n }\n\n /**\n * Calls the callback function [fn] with the provided [context].\n * If [context] is undefined then it will use the active context.\n * The context will be set as active\n * @param context A context (span) to be called with provided callback\n * @param fn Callback function\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with ReturnType>(\n context: Context | null,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const zoneName = this._createZoneName();\n\n const newZone = this._createZone(zoneName, context);\n\n return newZone.run(fn, thisArg, args);\n }\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/**\n * check if an object has addEventListener and removeEventListener functions then it will return true.\n * Generally only called with a `TargetWithEvents` but may be called with an unknown / any.\n * @param obj - The object to check.\n */\nexport function isListenerObject(obj: any = {}): boolean {\n return (\n typeof obj.addEventListener === 'function' &&\n typeof obj.removeEventListener === 'function'\n );\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\nimport { Meter } from './Meter';\nimport {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\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\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\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\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\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// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\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// Updates to this file should also be replicated to @opentelemetry/api and\n// @opentelemetry/core too.\n\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport const _globalThis: typeof globalThis =\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : ({} as typeof globalThis);\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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n\n constructor(\n private _provider: LoggerDelegator,\n public readonly name: string,\n public readonly version?: string | undefined,\n public readonly options?: LoggerOptions | undefined\n ) {}\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider.getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this.getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n */\n setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider.setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\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\nexport { Logger } from './types/Logger';\nexport { LoggerProvider } from './types/LoggerProvider';\nexport {\n LogAttributes,\n LogBody,\n LogRecord,\n SeverityNumber,\n} from './types/LogRecord';\nexport { LoggerOptions } from './types/LoggerOptions';\nexport { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\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 */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\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 PRODUCER = 3,\n\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 CONSUMER = 4,\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\nimport { diag } from '@opentelemetry/api';\nimport {\n SEMRESATTRS_SERVICE_NAME,\n SEMRESATTRS_TELEMETRY_SDK_LANGUAGE,\n SEMRESATTRS_TELEMETRY_SDK_NAME,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport { ResourceAttributes } from './types';\nimport { defaultServiceName } from './platform';\nimport { IResource } from './IResource';\n\n/**\n * A Resource describes the entity for which a signals (metrics or trace) are\n * collected.\n */\nexport class Resource implements IResource {\n static readonly EMPTY = new Resource({});\n private _syncAttributes?: ResourceAttributes;\n private _asyncAttributesPromise?: Promise;\n private _attributes?: ResourceAttributes;\n\n /**\n * Check if async attributes have resolved. This is useful to avoid awaiting\n * waitForAsyncAttributes (which will introduce asynchronous behavior) when not necessary.\n *\n * @returns true if the resource \"attributes\" property is not yet settled to its final value\n */\n public asyncAttributesPending?: boolean;\n\n /**\n * Returns an empty Resource\n */\n static empty(): IResource {\n return Resource.EMPTY;\n }\n\n /**\n * Returns a Resource that identifies the SDK in use.\n */\n static default(): IResource {\n return new Resource({\n [SEMRESATTRS_SERVICE_NAME]: defaultServiceName(),\n [SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]:\n SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE],\n [SEMRESATTRS_TELEMETRY_SDK_NAME]:\n SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_NAME],\n [SEMRESATTRS_TELEMETRY_SDK_VERSION]:\n SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION],\n });\n }\n\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: ResourceAttributes,\n asyncAttributesPromise?: Promise\n ) {\n this._attributes = attributes;\n this.asyncAttributesPending = asyncAttributesPromise != null;\n this._syncAttributes = this._attributes ?? {};\n this._asyncAttributesPromise = asyncAttributesPromise?.then(\n asyncAttributes => {\n this._attributes = Object.assign({}, this._attributes, asyncAttributes);\n this.asyncAttributesPending = false;\n return asyncAttributes;\n },\n err => {\n diag.debug(\"a resource's async attributes promise rejected: %s\", err);\n this.asyncAttributesPending = false;\n return {};\n }\n );\n }\n\n get attributes(): ResourceAttributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n return this._attributes ?? {};\n }\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?(): Promise {\n if (this.asyncAttributesPending) {\n await this._asyncAttributesPromise;\n }\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: IResource | null): IResource {\n if (!other) return this;\n\n // SpanAttributes from other resource overwrite attributes from this resource.\n const mergedSyncAttributes = {\n ...this._syncAttributes,\n //Support for old resource implementation where _syncAttributes is not defined\n ...((other as Resource)._syncAttributes ?? other.attributes),\n };\n\n if (\n !this._asyncAttributesPromise &&\n !(other as Resource)._asyncAttributesPromise\n ) {\n return new Resource(mergedSyncAttributes);\n }\n\n const mergedAttributesPromise = Promise.all([\n this._asyncAttributesPromise,\n (other as Resource)._asyncAttributesPromise,\n ]).then(([thisAsyncAttributes, otherAsyncAttributes]) => {\n return {\n ...this._syncAttributes,\n ...thisAsyncAttributes,\n //Support for old resource implementation where _syncAttributes is not defined\n ...((other as Resource)._syncAttributes ?? other.attributes),\n ...otherAsyncAttributes,\n };\n });\n\n return new Resource(mergedSyncAttributes, mergedAttributesPromise);\n }\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\nexport function defaultServiceName(): string {\n return 'unknown_service';\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 */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\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\nimport {\n Context,\n Link,\n SpanAttributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of SpanAttributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\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\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n\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 const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\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 const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\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 const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\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 const SEMATTRS_DB_USER = TMP_DB_USER;\n\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 const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\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 "schema name".\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 const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\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 const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\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 const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\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 const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\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 const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\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 const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\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 const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\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 const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\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 const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\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 const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\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 const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\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 const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\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 const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\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 const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\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 const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\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 const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\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 const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\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 const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\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 "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager'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 const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\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 const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\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 const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\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 const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\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 const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\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 const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\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 const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\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 const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\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 const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\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 const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\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 const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\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 const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\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 const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\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 const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\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 const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\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 const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\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 const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\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 const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\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 const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\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 const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\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 const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\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 const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\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 const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\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 const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\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 const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\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 const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\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 const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\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 const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\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 const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\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 const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\n/**\n * Current "managed" 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 const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\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 const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit'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 const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\n/**\n * The "namespace" 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 const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\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 const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\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 const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\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 const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\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'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 const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\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 const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\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 const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\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 const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\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 const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\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 const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\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 const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\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 const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\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 const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\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 const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\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 const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\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 const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\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'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 const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\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 const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\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 const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\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 const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\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 const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\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 const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\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 const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\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 const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\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 const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\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 const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\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 const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\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 const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\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 const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\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 const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\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 const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\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 const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\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 const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\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 const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\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 const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\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 const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\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 const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\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 const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\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 const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\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 const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n\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 const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\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 const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\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 const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\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 const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\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 const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", 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 const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\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 const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\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 const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they'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's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don'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 const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\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 const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\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 const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\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 const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\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 const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\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 const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\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 const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\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 const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\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 const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\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 const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\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 const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\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 const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\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 const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\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 const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\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 const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\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 const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\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 const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\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 AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\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 DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\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 "schema name".\n */\n DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\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 DB_OPERATION: 'db.operation';\n\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 DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\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 DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\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 DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\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 DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\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 DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\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 DB_SQL_TABLE: 'db.sql.table';\n\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 EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\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 EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\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 "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager'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 EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\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 FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\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 FAAS_DOCUMENT_TIME: 'faas.document.time';\n\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 FAAS_DOCUMENT_NAME: 'faas.document.name';\n\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 FAAS_TIME: 'faas.time';\n\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 FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\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 FAAS_INVOKED_NAME: 'faas.invoked_name';\n\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 FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\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 FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\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 NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\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 PEER_SERVICE: 'peer.service';\n\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 ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\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 ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\n /**\n * The "namespace" 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 CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\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 CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\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's value should be `https://www.example.com/`.\n */\n HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\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 HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\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 HTTP_FLAVOR: 'http.flavor';\n\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 HTTP_USER_AGENT: 'http.user_agent';\n\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 HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\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 HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\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 HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\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'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 HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\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 MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\n /**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\n MESSAGING_OPERATION: 'messaging.operation';\n\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 MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\n /**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they'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's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n */\n MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\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 RPC_SERVICE: 'rpc.service';\n\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 RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\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 RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\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 RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\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 MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\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 const SemanticAttributes: 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/* ----------------------------------------------------------------------------------------------------------\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\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\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n\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 const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\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 const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\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 const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\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 const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\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 const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\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 const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\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 const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\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 const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\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 const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\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 const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\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 const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\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 const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\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 const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\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 const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\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 const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\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 const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\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 const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\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 const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\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 const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\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 const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\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 const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\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 const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\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 const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\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 const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\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 const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\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 const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\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 const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\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 const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\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 const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\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 const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\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 const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\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 const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\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 const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\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 const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\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 const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\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 const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\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 const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\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 const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\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 const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\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 const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\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 const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\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 const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\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 const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\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 const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\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 const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\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 const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\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 const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the 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 * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\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 const DbSystemValues: 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/* ----------------------------------------------------------------------------------------------------------\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\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\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\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 const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the 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 * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\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 const DbCassandraConsistencyLevelValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n\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 const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\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 const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\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 const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\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 const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\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 const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\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 const FaasTriggerValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n\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 const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\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 const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\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 const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\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 const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\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\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\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n\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 const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\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 const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\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 const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\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 const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the 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 * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\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 const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n\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 const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\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 const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\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 const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\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 const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\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 const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\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 const NetTransportValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n\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 const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\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 const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\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 const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\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 const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\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 const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\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 const NetHostConnectionTypeValues: 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/* ----------------------------------------------------------------------------------------------------------\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\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\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\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 const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the 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 * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\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 const NetHostConnectionSubtypeValues: 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/* ----------------------------------------------------------------------------------------------------------\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\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\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n\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 const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\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 const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\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 const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\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 const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\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 const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the 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 * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\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 const HttpFlavorValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\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 const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\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 "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", 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 const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", 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 const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the 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 "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\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 const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\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\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\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n\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 const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\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 const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\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 const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\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 const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\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 const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\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 const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\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 const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\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 const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\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 const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\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 const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\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 const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\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 const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\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 const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\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 const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\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 const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\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 const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\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 const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the 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 * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\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 const RpcGrpcStatusCodeValues: 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/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\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\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n\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 const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\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 const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\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 const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\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\nimport {\n Context,\n diag,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n SpanAttributes,\n SpanAttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n SpanStatusCode,\n TimeInput,\n} from '@opentelemetry/api';\nimport {\n addHrTimes,\n millisToHrTime,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n InstrumentationLibrary,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport { IResource } from '@opentelemetry/resources';\nimport {\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport { ExceptionEventName } from './enums';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { SpanProcessor } from './SpanProcessor';\nimport { TimedEvent } from './TimedEvent';\nimport { Tracer } from './Tracer';\nimport { SpanLimits } from './types';\n\n/**\n * This class represents a span.\n */\nexport class Span implements APISpan, ReadableSpan {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanId?: string;\n readonly attributes: SpanAttributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: IResource;\n readonly instrumentationLibrary: InstrumentationLibrary;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new Span instance.\n *\n * @deprecated calling Span constructor directly is not supported. Please use tracer.startSpan.\n * */\n constructor(\n parentTracer: Tracer,\n context: Context,\n spanName: string,\n spanContext: SpanContext,\n kind: SpanKind,\n parentSpanId?: string,\n links: Link[] = [],\n startTime?: TimeInput,\n _deprecatedClock?: unknown, // keeping this argument even though it is unused to ensure backwards compatibility\n attributes?: SpanAttributes\n ) {\n this.name = spanName;\n this._spanContext = spanContext;\n this.parentSpanId = parentSpanId;\n this.kind = kind;\n this.links = links;\n\n const now = Date.now();\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + getTimeOrigin());\n this._startTimeProvided = startTime != null;\n\n this.startTime = this._getTime(startTime ?? now);\n\n this.resource = parentTracer.resource;\n this.instrumentationLibrary = parentTracer.instrumentationLibrary;\n this._spanLimits = parentTracer.getSpanLimits();\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit || 0;\n\n if (attributes != null) {\n this.setAttributes(attributes);\n }\n\n this._spanProcessor = parentTracer.getActiveSpanProcessor();\n this._spanProcessor.onStart(this, context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: SpanAttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n if (\n Object.keys(this.attributes).length >=\n this._spanLimits.attributeCountLimit! &&\n !Object.prototype.hasOwnProperty.call(this.attributes, key)\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n return this;\n }\n\n setAttributes(attributes: SpanAttributes): this {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\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(\n name: string,\n attributesOrStartTime?: SpanAttributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n if (this._spanLimits.eventCountLimit === 0) {\n 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 diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const attributes = sanitizeAttributes(attributesOrStartTime);\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount: 0,\n });\n return this;\n }\n\n addLink(link: Link): this {\n this.links.push(link);\n return this;\n }\n\n addLinks(links: Link[]): this {\n this.links.push(...links);\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n this.status = { ...status };\n\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 diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n delete this.status.message;\n }\n\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this._ended = true;\n\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\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 millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: SpanAttributes = {};\n if (typeof exception === 'string') {\n attributes[SEMATTRS_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[SEMATTRS_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[SEMATTRS_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[SEMATTRS_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[SEMATTRS_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (\n attributes[SEMATTRS_EXCEPTION_TYPE] ||\n attributes[SEMATTRS_EXCEPTION_MESSAGE]\n ) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n diag.warn(\n `Can not execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n }\n return this._ended;\n }\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 private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\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 private _truncateToSize(value: SpanAttributeValue): SpanAttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\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// Event name definitions\nexport const ExceptionEventName = 'exception';\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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\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\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\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\nimport {\n Context,\n isSpanContextValid,\n Link,\n SpanAttributes,\n SpanKind,\n TraceFlags,\n trace,\n} from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: SpanAttributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\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}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\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\nimport { isValidTraceId } from '@opentelemetry/api';\nimport { Sampler, SamplingDecision, SamplingResult } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private _upperBound: number;\n\n constructor(private readonly _ratio: number = 0) {\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\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}\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\nimport { diag } from '@opentelemetry/api';\nimport { getEnv, TracesSamplerValues, ENVIRONMENT } from '@opentelemetry/core';\nimport { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst FALLBACK_OTEL_TRACES_SAMPLER = TracesSamplerValues.AlwaysOn;\nconst DEFAULT_RATIO = 1;\n\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\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\nexport function loadDefaultConfig() {\n const env = getEnv();\n\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:\n env.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n attributePerLinkCountLimit: env.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n },\n mergeResourceWithDefaults: true,\n };\n}\n\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 */\nexport function buildSamplerFromEnv(\n environment: Required = getEnv()\n): Sampler {\n switch (environment.OTEL_TRACES_SAMPLER) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(\n getSamplerProbabilityFromEnv(environment)\n );\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(\n getSamplerProbabilityFromEnv(environment)\n ),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${environment.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}\".`\n );\n return new AlwaysOnSampler();\n }\n}\n\nfunction getSamplerProbabilityFromEnv(\n environment: Required\n): number | undefined {\n if (\n environment.OTEL_TRACES_SAMPLER_ARG === undefined ||\n environment.OTEL_TRACES_SAMPLER_ARG === ''\n ) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n const probability = Number(environment.OTEL_TRACES_SAMPLER_ARG);\n\n if (isNaN(probability)) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\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\nimport { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\n\nconst SHARED_CHAR_CODES_ARRAY = Array(32);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(\n null,\n SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2)\n );\n };\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\nimport * as api from '@opentelemetry/api';\nimport {\n InstrumentationLibrary,\n sanitizeAttributes,\n isTracingSuppressed,\n} from '@opentelemetry/core';\nimport { IResource } from '@opentelemetry/resources';\nimport { BasicTracerProvider } from './BasicTracerProvider';\nimport { Span } from './Span';\nimport { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Sampler } from './Sampler';\nimport { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly resource: IResource;\n readonly instrumentationLibrary: InstrumentationLibrary;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationLibrary: InstrumentationLibrary,\n config: TracerConfig,\n private _tracerProvider: BasicTracerProvider\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this.resource = _tracerProvider.resource;\n this.instrumentationLibrary = instrumentationLibrary;\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\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\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let traceId;\n let traceState;\n let parentSpanId;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n 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(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\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 = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new Span(\n this,\n context,\n name,\n spanContext,\n spanKind,\n parentSpanId,\n links,\n options.startTime,\n undefined,\n initAttributes\n );\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n\n getActiveSpanProcessor(): SpanProcessor {\n return this._tracerProvider.getActiveSpanProcessor();\n }\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\nimport {\n context,\n diag,\n propagation,\n TextMapPropagator,\n trace,\n TracerProvider,\n} from '@opentelemetry/api';\nimport {\n CompositePropagator,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n getEnv,\n merge,\n} from '@opentelemetry/core';\nimport { IResource, Resource } from '@opentelemetry/resources';\nimport { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nimport { SDKRegistrationConfig, TracerConfig } from './types';\nimport { SpanExporter } from './export/SpanExporter';\nimport { BatchSpanProcessor } from './platform';\nimport { reconfigureLimits } from './utility';\n\nexport type PROPAGATOR_FACTORY = () => TextMapPropagator;\nexport type EXPORTER_FACTORY = () => SpanExporter;\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n protected static readonly _registeredPropagators = new Map<\n string,\n PROPAGATOR_FACTORY\n >([\n ['tracecontext', () => new W3CTraceContextPropagator()],\n ['baggage', () => new W3CBaggagePropagator()],\n ]);\n\n protected static readonly _registeredExporters = new Map<\n string,\n EXPORTER_FACTORY\n >();\n\n private readonly _config: TracerConfig;\n private readonly _registeredSpanProcessors: SpanProcessor[] = [];\n private readonly _tracers: Map = new Map();\n\n activeSpanProcessor: SpanProcessor;\n readonly resource: IResource;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this.resource = mergedConfig.resource ?? Resource.empty();\n\n if (mergedConfig.mergeResourceWithDefaults) {\n this.resource = Resource.default().merge(this.resource);\n }\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this.resource,\n });\n\n if (config.spanProcessors?.length) {\n this._registeredSpanProcessors = [...config.spanProcessors];\n this.activeSpanProcessor = new MultiSpanProcessor(\n this._registeredSpanProcessors\n );\n } else {\n const defaultExporter = this._buildExporterFromEnv();\n if (defaultExporter !== undefined) {\n const batchProcessor = new BatchSpanProcessor(defaultExporter);\n this.activeSpanProcessor = batchProcessor;\n } else {\n this.activeSpanProcessor = new NoopSpanProcessor();\n }\n }\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): Tracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\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: SpanProcessor): void {\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 =>\n diag.error(\n 'Error while trying to shutdown current span processor',\n err\n )\n );\n }\n this._registeredSpanProcessors.push(spanProcessor);\n this.activeSpanProcessor = new MultiSpanProcessor(\n this._registeredSpanProcessors\n );\n }\n\n getActiveSpanProcessor(): SpanProcessor {\n return this.activeSpanProcessor;\n }\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: SDKRegistrationConfig = {}): void {\n trace.setGlobalTracerProvider(this);\n if (config.propagator === undefined) {\n config.propagator = this._buildPropagatorFromEnv();\n }\n\n if (config.contextManager) {\n context.setGlobalContextManager(config.contextManager);\n }\n\n if (config.propagator) {\n propagation.setGlobalPropagator(config.propagator);\n }\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._registeredSpanProcessors.map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\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 );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this.activeSpanProcessor.shutdown();\n }\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 protected _getPropagator(name: string): TextMapPropagator | undefined {\n return (\n this.constructor as typeof BasicTracerProvider\n )._registeredPropagators.get(name)?.();\n }\n\n protected _getSpanExporter(name: string): SpanExporter | undefined {\n return (\n this.constructor as typeof BasicTracerProvider\n )._registeredExporters.get(name)?.();\n }\n\n protected _buildPropagatorFromEnv(): TextMapPropagator | undefined {\n // per spec, propagators from env must be deduplicated\n const uniquePropagatorNames = Array.from(\n new Set(getEnv().OTEL_PROPAGATORS)\n );\n\n const propagators = uniquePropagatorNames.map(name => {\n const propagator = this._getPropagator(name);\n if (!propagator) {\n diag.warn(\n `Propagator \"${name}\" requested through environment variable is unavailable.`\n );\n }\n\n return propagator;\n });\n const validPropagators = propagators.reduce(\n (list, item) => {\n if (item) {\n list.push(item);\n }\n return list;\n },\n []\n );\n\n if (validPropagators.length === 0) {\n return;\n } else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n } else {\n return new CompositePropagator({\n propagators: validPropagators,\n });\n }\n }\n\n protected _buildExporterFromEnv(): SpanExporter | undefined {\n const exporterName = getEnv().OTEL_TRACES_EXPORTER;\n if (exporterName === 'none' || exporterName === '') return;\n const exporter = this._getSpanExporter(exporterName);\n if (!exporter) {\n diag.error(\n `Exporter \"${exporterName}\" requested through environment variable is unavailable.`\n );\n }\n return exporter;\n }\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\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport { Sampler } from './Sampler';\nimport { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport {\n DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n getEnvWithoutDefaults,\n} from '@opentelemetry/core';\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\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 */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\n const parsedEnvConfig = getEnvWithoutDefaults();\n\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 userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT ??\n parsedEnvConfig.OTEL_ATTRIBUTE_COUNT_LIMIT ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\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 userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT ??\n parsedEnvConfig.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\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\nimport { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { ReadableSpan } from './export/ReadableSpan';\nimport { Span } from './Span';\nimport { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n constructor(private readonly _spanProcessors: SpanProcessor[]) {}\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\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 globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\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}\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\nimport { Context } from '@opentelemetry/api';\nimport { ReadableSpan } from './ReadableSpan';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\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\nimport { context, Context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getEnv,\n globalErrorHandler,\n suppressTracing,\n unrefTimer,\n} from '@opentelemetry/core';\nimport { Span } from '../Span';\nimport { SpanProcessor } from '../SpanProcessor';\nimport { BufferConfig } from '../types';\nimport { ReadableSpan } from './ReadableSpan';\nimport { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(\n private readonly _exporter: SpanExporter,\n config?: T\n ) {\n const env = getEnv();\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : env.OTEL_BSP_MAX_EXPORT_BATCH_SIZE;\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : env.OTEL_BSP_MAX_QUEUE_SIZE;\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : env.OTEL_BSP_SCHEDULE_DELAY;\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : env.OTEL_BSP_EXPORT_TIMEOUT;\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _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\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\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 private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\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\n private _flushOneBatch(): Promise {\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 context.with(suppressTracing(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: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) 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 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) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n unrefTimer(this._timer);\n }\n\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\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\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport { SpanExporter } from '../../../export/SpanExporter';\nimport { BatchSpanProcessorBrowserConfig } from '../../../types';\nimport { globalErrorHandler } from '@opentelemetry/core';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n private _visibilityChangeListener?: () => void;\n private _pageHideListener?: () => void;\n\n constructor(\n _exporter: SpanExporter,\n config?: BatchSpanProcessorBrowserConfig\n ) {\n super(_exporter, config);\n this.onInit(config);\n }\n\n private onInit(config?: BatchSpanProcessorBrowserConfig): void {\n if (\n config?.disableAutoFlushOnDocumentHide !== true &&\n typeof document !== 'undefined'\n ) {\n this._visibilityChangeListener = () => {\n if (document.visibilityState === 'hidden') {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n }\n };\n this._pageHideListener = () => {\n this.forceFlush().catch(error => {\n globalErrorHandler(error);\n });\n };\n document.addEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n\n // use 'pagehide' event as a fallback for Safari; see https://bugs.webkit.org/show_bug.cgi?id=116769\n document.addEventListener('pagehide', this._pageHideListener);\n }\n }\n\n protected onShutdown(): void {\n if (typeof document !== 'undefined') {\n if (this._visibilityChangeListener) {\n document.removeEventListener(\n 'visibilitychange',\n this._visibilityChangeListener\n );\n }\n if (this._pageHideListener) {\n document.removeEventListener('pagehide', this._pageHideListener);\n }\n }\n }\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\nimport { Context, ContextManager, ROOT_CONTEXT } from '@opentelemetry/api';\n\n/**\n * Stack Context Manager for managing the state in web\n * it doesn't fully support the async calls though\n */\nexport class StackContextManager implements ContextManager {\n /**\n * whether the context manager is enabled or not\n */\n private _enabled = false;\n\n /**\n * Keeps the reference to current context\n */\n public _currentContext = ROOT_CONTEXT;\n\n /**\n *\n * @param context\n * @param target Function to be executed within the context\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _bindFunction(\n context = ROOT_CONTEXT,\n target: T\n ): T {\n const manager = this;\n const contextWrapper = function (this: unknown, ...args: unknown[]) {\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 return contextWrapper as unknown as T;\n }\n\n /**\n * Returns the active context\n */\n active(): Context {\n return this._currentContext;\n }\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: Context, target: T): T {\n // if no specific context to propagate is given, we use the current one\n if (context === undefined) {\n context = this.active();\n }\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n\n /**\n * Disable the context manager (clears the current context)\n */\n disable(): this {\n this._currentContext = ROOT_CONTEXT;\n this._enabled = false;\n return this;\n }\n\n /**\n * Enables the context manager and creates a default(root) context\n */\n enable(): this {\n if (this._enabled) {\n return this;\n }\n this._enabled = true;\n this._currentContext = ROOT_CONTEXT;\n return this;\n }\n\n /**\n * Calls the callback function [fn] with the provided [context]. If [context] is undefined then it will use the window.\n * The context will be set as active\n * @param context\n * @param fn Callback function\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with ReturnType>(\n context: Context | null,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const previousContext = this._currentContext;\n this._currentContext = context || ROOT_CONTEXT;\n\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this._currentContext = previousContext;\n }\n }\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\nimport {\n BasicTracerProvider,\n SDKRegistrationConfig,\n TracerConfig,\n} from '@opentelemetry/sdk-trace-base';\nimport { StackContextManager } from './StackContextManager';\n\n/**\n * WebTracerConfig provides an interface for configuring a Web Tracer.\n */\nexport type WebTracerConfig = TracerConfig;\n\n/**\n * This class represents a web tracer with {@link StackContextManager}\n */\nexport class WebTracerProvider extends BasicTracerProvider {\n /**\n * Constructs a new Tracer instance.\n * @param config Web Tracer config\n */\n constructor(config: WebTracerConfig = {}) {\n super(config);\n\n if ((config as SDKRegistrationConfig).contextManager) {\n throw (\n 'contextManager should be defined in register method not in' +\n ' constructor'\n );\n }\n if ((config as SDKRegistrationConfig).propagator) {\n throw 'propagator should be defined in register method not in constructor';\n }\n }\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 override register(config: SDKRegistrationConfig = {}): void {\n if (config.contextManager === undefined) {\n config.contextManager = new StackContextManager();\n }\n if (config.contextManager) {\n config.contextManager.enable();\n }\n\n super.register(config);\n }\n}\n","import { ExportResultCode } from '@opentelemetry/core';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { createExportTraceServiceRequest } from '@opentelemetry/otlp-transformer/build/src/trace/internal';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-web';\n\nimport { sendFaroEvents } from './faroTraceExporter.utils';\nimport type { FaroTraceExporterConfig } from './types';\n\nexport class FaroTraceExporter implements SpanExporter {\n constructor(private config: FaroTraceExporterConfig) {}\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n const traceEvent = createExportTraceServiceRequest(spans, { useHex: true, useLongBits: false });\n\n this.config.api.pushTraces(traceEvent);\n sendFaroEvents(traceEvent.resourceSpans);\n\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n\n shutdown(): Promise {\n return Promise.resolve(undefined);\n }\n}\n","import type { SpanContext } from '@opentelemetry/api';\nimport { ESpanKind, type IResourceSpans } from '@opentelemetry/otlp-transformer/build/src/trace/internal-types';\n\nimport { faro, unknownString } from '@grafana/faro-core';\nimport type { EventAttributes as FaroEventAttributes } from '@grafana/faro-web-sdk';\n\nconst DURATION_NS_KEY = 'duration_ns';\n\nexport function sendFaroEvents(resourceSpans: IResourceSpans[] = []) {\n for (const resourceSpan of resourceSpans) {\n const { scopeSpans } = resourceSpan;\n\n for (const scopeSpan of scopeSpans) {\n const { scope, spans = [] } = scopeSpan;\n\n for (const span of spans) {\n if (span.kind !== ESpanKind.SPAN_KIND_CLIENT) {\n continue;\n }\n\n const spanContext: Pick = {\n traceId: span.traceId.toString(),\n spanId: span.spanId.toString(),\n };\n\n const faroEventAttributes: FaroEventAttributes = {};\n\n for (const attribute of span.attributes) {\n faroEventAttributes[attribute.key] = String(Object.values(attribute.value)[0]);\n }\n\n // Add span duration in nanoseconds\n if (!Number.isNaN(span.endTimeUnixNano) && !Number.isNaN(span.startTimeUnixNano)) {\n faroEventAttributes[DURATION_NS_KEY] = String(Number(span.endTimeUnixNano) - Number(span.startTimeUnixNano));\n }\n\n const index = (scope?.name ?? '').indexOf('-');\n let eventName = unknownString;\n\n if (scope?.name) {\n if (index === -1) {\n eventName = scope.name.split('/')[1] ?? scope.name;\n }\n\n if (index > -1) {\n eventName = scope?.name.substring(index + 1);\n }\n }\n\n faro.api.pushEvent(`faro.tracing.${eventName}`, faroEventAttributes, undefined, { spanContext });\n }\n }\n }\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\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\nexport enum PerformanceTimingNames {\n CONNECT_END = 'connectEnd',\n CONNECT_START = 'connectStart',\n DECODED_BODY_SIZE = 'decodedBodySize',\n DOM_COMPLETE = 'domComplete',\n DOM_CONTENT_LOADED_EVENT_END = 'domContentLoadedEventEnd',\n DOM_CONTENT_LOADED_EVENT_START = 'domContentLoadedEventStart',\n DOM_INTERACTIVE = 'domInteractive',\n DOMAIN_LOOKUP_END = 'domainLookupEnd',\n DOMAIN_LOOKUP_START = 'domainLookupStart',\n ENCODED_BODY_SIZE = 'encodedBodySize',\n FETCH_START = 'fetchStart',\n LOAD_EVENT_END = 'loadEventEnd',\n LOAD_EVENT_START = 'loadEventStart',\n NAVIGATION_START = 'navigationStart',\n REDIRECT_END = 'redirectEnd',\n REDIRECT_START = 'redirectStart',\n REQUEST_START = 'requestStart',\n RESPONSE_END = 'responseEnd',\n RESPONSE_START = 'responseStart',\n SECURE_CONNECTION_START = 'secureConnectionStart',\n UNLOAD_EVENT_END = 'unloadEventEnd',\n UNLOAD_EVENT_START = 'unloadEventStart',\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\nimport {\n PerformanceEntries,\n PerformanceResourceTimingInfo,\n PropagateTraceHeaderCorsUrls,\n} from './types';\nimport { PerformanceTimingNames as PTN } from './enums/PerformanceTimingNames';\nimport * as api from '@opentelemetry/api';\nimport {\n hrTimeToNanoseconds,\n timeInputToHrTime,\n urlMatches,\n} from '@opentelemetry/core';\nimport {\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\n\n// Used to normalize relative URLs\nlet urlNormalizingAnchor: HTMLAnchorElement | undefined;\nfunction getUrlNormalizingAnchor(): HTMLAnchorElement {\n if (!urlNormalizingAnchor) {\n urlNormalizingAnchor = document.createElement('a');\n }\n\n return urlNormalizingAnchor;\n}\n\n/**\n * Helper function to be able to use enum as typed key in type and in interface when using forEach\n * @param obj\n * @param key\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function hasKey(\n obj: O,\n key: keyof any\n): key is keyof O {\n return key in obj;\n}\n\n/**\n * Helper function for starting an event on span based on {@link PerformanceEntries}\n * @param span\n * @param performanceName name of performance entry for time start\n * @param entries\n * @param refPerfName name of performance entry to use for reference\n */\nexport function addSpanNetworkEvent(\n span: api.Span,\n performanceName: string,\n entries: PerformanceEntries,\n refPerfName?: string\n): api.Span | undefined {\n let perfTime = undefined;\n let refTime = undefined;\n if (\n hasKey(entries, performanceName) &&\n typeof entries[performanceName] === 'number'\n ) {\n perfTime = entries[performanceName];\n }\n const refName = refPerfName || PTN.FETCH_START;\n // Use a reference time which is the earliest possible value so that the performance timings that are earlier should not be added\n // using FETCH START time in case no reference is provided\n if (hasKey(entries, refName) && typeof entries[refName] === 'number') {\n refTime = entries[refName];\n }\n if (perfTime !== undefined && refTime !== undefined && perfTime >= refTime) {\n span.addEvent(performanceName, perfTime);\n return span;\n }\n return undefined;\n}\n\n/**\n * Helper function for adding network events and content length attributes\n * @param span\n * @param resource\n * @param ignoreNetworkEvents\n */\nexport function addSpanNetworkEvents(\n span: api.Span,\n resource: PerformanceEntries,\n ignoreNetworkEvents = false\n): void {\n if (!ignoreNetworkEvents) {\n addSpanNetworkEvent(span, PTN.FETCH_START, resource);\n addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_START, resource);\n addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_END, resource);\n addSpanNetworkEvent(span, PTN.CONNECT_START, resource);\n if (\n hasKey(resource as PerformanceResourceTiming, 'name') &&\n (resource as PerformanceResourceTiming)['name'].startsWith('https:')\n ) {\n addSpanNetworkEvent(span, PTN.SECURE_CONNECTION_START, resource);\n }\n addSpanNetworkEvent(span, PTN.CONNECT_END, resource);\n addSpanNetworkEvent(span, PTN.REQUEST_START, resource);\n addSpanNetworkEvent(span, PTN.RESPONSE_START, resource);\n addSpanNetworkEvent(span, PTN.RESPONSE_END, resource);\n }\n const encodedLength = resource[PTN.ENCODED_BODY_SIZE];\n if (encodedLength !== undefined) {\n span.setAttribute(SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, encodedLength);\n }\n const decodedLength = resource[PTN.DECODED_BODY_SIZE];\n // Spec: Not set if transport encoding not used (in which case encoded and decoded sizes match)\n if (decodedLength !== undefined && encodedLength !== decodedLength) {\n span.setAttribute(\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n decodedLength\n );\n }\n}\n\n/**\n * sort resources by startTime\n * @param filteredResources\n */\nexport function sortResources(\n filteredResources: PerformanceResourceTiming[]\n): PerformanceResourceTiming[] {\n return filteredResources.slice().sort((a, b) => {\n const valueA = a[PTN.FETCH_START];\n const valueB = b[PTN.FETCH_START];\n if (valueA > valueB) {\n return 1;\n } else if (valueA < valueB) {\n return -1;\n }\n return 0;\n });\n}\n\n/** Returns the origin if present (if in browser context). */\nfunction getOrigin(): string | undefined {\n return typeof location !== 'undefined' ? location.origin : undefined;\n}\n\n/**\n * Get closest performance resource ignoring the resources that have been\n * already used.\n * @param spanUrl\n * @param startTimeHR\n * @param endTimeHR\n * @param resources\n * @param ignoredResources\n * @param initiatorType\n */\nexport function getResource(\n spanUrl: string,\n startTimeHR: api.HrTime,\n endTimeHR: api.HrTime,\n resources: PerformanceResourceTiming[],\n ignoredResources: WeakSet = new WeakSet(),\n initiatorType?: string\n): PerformanceResourceTimingInfo {\n // de-relativize the URL before usage (does no harm to absolute URLs)\n const parsedSpanUrl = parseUrl(spanUrl);\n spanUrl = parsedSpanUrl.toString();\n\n const filteredResources = filterResourcesForSpan(\n spanUrl,\n startTimeHR,\n endTimeHR,\n resources,\n ignoredResources,\n initiatorType\n );\n\n if (filteredResources.length === 0) {\n return {\n mainRequest: undefined,\n };\n }\n if (filteredResources.length === 1) {\n return {\n mainRequest: filteredResources[0],\n };\n }\n const sorted = sortResources(filteredResources);\n\n if (parsedSpanUrl.origin !== getOrigin() && sorted.length > 1) {\n let corsPreFlightRequest: PerformanceResourceTiming | undefined = sorted[0];\n let mainRequest: PerformanceResourceTiming = findMainRequest(\n sorted,\n corsPreFlightRequest[PTN.RESPONSE_END],\n endTimeHR\n );\n\n const responseEnd = corsPreFlightRequest[PTN.RESPONSE_END];\n const fetchStart = mainRequest[PTN.FETCH_START];\n\n // no corsPreFlightRequest\n if (fetchStart < responseEnd) {\n mainRequest = corsPreFlightRequest;\n corsPreFlightRequest = undefined;\n }\n\n return {\n corsPreFlightRequest,\n mainRequest,\n };\n } else {\n return {\n mainRequest: filteredResources[0],\n };\n }\n}\n\n/**\n * Will find the main request skipping the cors pre flight requests\n * @param resources\n * @param corsPreFlightRequestEndTime\n * @param spanEndTimeHR\n */\nfunction findMainRequest(\n resources: PerformanceResourceTiming[],\n corsPreFlightRequestEndTime: number,\n spanEndTimeHR: api.HrTime\n): PerformanceResourceTiming {\n const spanEndTime = hrTimeToNanoseconds(spanEndTimeHR);\n const minTime = hrTimeToNanoseconds(\n timeInputToHrTime(corsPreFlightRequestEndTime)\n );\n\n let mainRequest: PerformanceResourceTiming = resources[1];\n let bestGap;\n\n const length = resources.length;\n for (let i = 1; i < length; i++) {\n const resource = resources[i];\n const resourceStartTime = hrTimeToNanoseconds(\n timeInputToHrTime(resource[PTN.FETCH_START])\n );\n\n const resourceEndTime = hrTimeToNanoseconds(\n timeInputToHrTime(resource[PTN.RESPONSE_END])\n );\n\n const currentGap = spanEndTime - resourceEndTime;\n\n if (resourceStartTime >= minTime && (!bestGap || currentGap < bestGap)) {\n bestGap = currentGap;\n mainRequest = resource;\n }\n }\n return mainRequest;\n}\n\n/**\n * Filter all resources that has started and finished according to span start time and end time.\n * It will return the closest resource to a start time\n * @param spanUrl\n * @param startTimeHR\n * @param endTimeHR\n * @param resources\n * @param ignoredResources\n */\nfunction filterResourcesForSpan(\n spanUrl: string,\n startTimeHR: api.HrTime,\n endTimeHR: api.HrTime,\n resources: PerformanceResourceTiming[],\n ignoredResources: WeakSet,\n initiatorType?: string\n) {\n const startTime = hrTimeToNanoseconds(startTimeHR);\n const endTime = hrTimeToNanoseconds(endTimeHR);\n let filteredResources = resources.filter(resource => {\n const resourceStartTime = hrTimeToNanoseconds(\n timeInputToHrTime(resource[PTN.FETCH_START])\n );\n const resourceEndTime = hrTimeToNanoseconds(\n timeInputToHrTime(resource[PTN.RESPONSE_END])\n );\n\n return (\n resource.initiatorType.toLowerCase() ===\n (initiatorType || 'xmlhttprequest') &&\n resource.name === spanUrl &&\n resourceStartTime >= startTime &&\n resourceEndTime <= endTime\n );\n });\n\n if (filteredResources.length > 0) {\n filteredResources = filteredResources.filter(resource => {\n return !ignoredResources.has(resource);\n });\n }\n\n return filteredResources;\n}\n\n/**\n * The URLLike interface represents an URL and HTMLAnchorElement compatible fields.\n */\nexport interface URLLike {\n hash: string;\n host: string;\n hostname: string;\n href: string;\n readonly origin: string;\n password: string;\n pathname: string;\n port: string;\n protocol: string;\n search: string;\n username: string;\n}\n\n/**\n * Parses url using URL constructor or fallback to anchor element.\n * @param url\n */\nexport function parseUrl(url: string): URLLike {\n if (typeof URL === 'function') {\n return new URL(\n url,\n typeof document !== 'undefined'\n ? document.baseURI\n : typeof location !== 'undefined' // Some JS runtimes (e.g. Deno) don't define this\n ? location.href\n : undefined\n );\n }\n const element = getUrlNormalizingAnchor();\n element.href = url;\n return element;\n}\n\n/**\n * Parses url using URL constructor or fallback to anchor element and serialize\n * it to a string.\n *\n * Performs the steps described in https://html.spec.whatwg.org/multipage/urls-and-fetching.html#parse-a-url\n *\n * @param url\n */\nexport function normalizeUrl(url: string): string {\n const urlLike = parseUrl(url);\n return urlLike.href;\n}\n\n/**\n * Get element XPath\n * @param target - target element\n * @param optimised - when id attribute of element is present the xpath can be\n * simplified to contain id\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function getElementXPath(target: any, optimised?: boolean): string {\n if (target.nodeType === Node.DOCUMENT_NODE) {\n return '/';\n }\n const targetValue = getNodeValue(target, optimised);\n if (optimised && targetValue.indexOf('@id') > 0) {\n return targetValue;\n }\n let xpath = '';\n if (target.parentNode) {\n xpath += getElementXPath(target.parentNode, false);\n }\n xpath += targetValue;\n\n return xpath;\n}\n\n/**\n * get node index within the siblings\n * @param target\n */\nfunction getNodeIndex(target: HTMLElement): number {\n if (!target.parentNode) {\n return 0;\n }\n const allowedTypes = [target.nodeType];\n if (target.nodeType === Node.CDATA_SECTION_NODE) {\n allowedTypes.push(Node.TEXT_NODE);\n }\n let elements = Array.from(target.parentNode.childNodes);\n elements = elements.filter((element: Node) => {\n const localName = (element as HTMLElement).localName;\n return (\n allowedTypes.indexOf(element.nodeType) >= 0 &&\n localName === target.localName\n );\n });\n if (elements.length >= 1) {\n return elements.indexOf(target) + 1; // xpath starts from 1\n }\n // if there are no other similar child xpath doesn't need index\n return 0;\n}\n\n/**\n * get node value for xpath\n * @param target\n * @param optimised\n */\nfunction getNodeValue(target: HTMLElement, optimised?: boolean): string {\n const nodeType = target.nodeType;\n const index = getNodeIndex(target);\n let nodeValue = '';\n if (nodeType === Node.ELEMENT_NODE) {\n const id = target.getAttribute('id');\n if (optimised && id) {\n return `//*[@id=\"${id}\"]`;\n }\n nodeValue = target.localName;\n } else if (\n nodeType === Node.TEXT_NODE ||\n nodeType === Node.CDATA_SECTION_NODE\n ) {\n nodeValue = 'text()';\n } else if (nodeType === Node.COMMENT_NODE) {\n nodeValue = 'comment()';\n } else {\n return '';\n }\n // if index is 1 it can be omitted in xpath\n if (nodeValue && index > 1) {\n return `/${nodeValue}[${index}]`;\n }\n return `/${nodeValue}`;\n}\n\n/**\n * Checks if trace headers should be propagated\n * @param spanUrl\n * @private\n */\nexport function shouldPropagateTraceHeaders(\n spanUrl: string,\n propagateTraceHeaderCorsUrls?: PropagateTraceHeaderCorsUrls\n): boolean {\n let propagateTraceHeaderUrls = propagateTraceHeaderCorsUrls || [];\n if (\n typeof propagateTraceHeaderUrls === 'string' ||\n propagateTraceHeaderUrls instanceof RegExp\n ) {\n propagateTraceHeaderUrls = [propagateTraceHeaderUrls];\n }\n const parsedSpanUrl = parseUrl(spanUrl);\n\n if (parsedSpanUrl.origin === getOrigin()) {\n return true;\n } else {\n return propagateTraceHeaderUrls.some(propagateTraceHeaderUrl =>\n urlMatches(spanUrl, propagateTraceHeaderUrl)\n );\n }\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/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n COMPONENT = 'component',\n HTTP_ERROR_NAME = 'http.error_name',\n HTTP_STATUS_TEXT = 'http.status_text',\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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from 'shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n\n constructor(\n public readonly instrumentationName: string,\n public readonly instrumentationVersion: string,\n config: ConfigType\n ) {\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\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\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport * as types from '../../types';\nimport { InstrumentationConfig } from '../../types';\n\n/**\n * Base abstract class for instrumenting web plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n if (this._config.enabled) {\n this.enable();\n }\n }\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// Much of the logic here overlaps with the same utils file in opentelemetry-instrumentation-xml-http-request\n// These may be unified in the future.\n\nimport * as api from '@opentelemetry/api';\n\nconst DIAG_LOGGER = api.diag.createComponentLogger({\n namespace: '@opentelemetry/opentelemetry-instrumentation-fetch/utils',\n});\n\n/**\n * Helper function to determine payload content length for fetch requests\n *\n * The fetch API is kinda messy: there are a couple of ways the body can be passed in.\n *\n * In all cases, the body param can be some variation of ReadableStream,\n * and ReadableStreams can only be read once! We want to avoid consuming the body here,\n * because that would mean that the body never gets sent with the actual fetch request.\n *\n * Either the first arg is a Request object, which can be cloned\n * so we can clone that object and read the body of the clone\n * without disturbing the original argument\n * However, reading the body here can only be done async; the body() method returns a promise\n * this means this entire function has to return a promise\n *\n * OR the first arg is a url/string\n * in which case the second arg has type RequestInit\n * RequestInit is NOT cloneable, but RequestInit.body is writable\n * so we can chain it into ReadableStream.pipeThrough()\n *\n * ReadableStream.pipeThrough() lets us process a stream and returns a new stream\n * So we can measure the body length as it passes through the pie, but need to attach\n * the new stream to the original request\n * so that the browser still has access to the body.\n *\n * @param body\n * @returns promise that resolves to the content length of the body\n */\nexport function getFetchBodyLength(...args: Parameters) {\n if (args[0] instanceof URL || typeof args[0] === 'string') {\n const requestInit = args[1];\n if (!requestInit?.body) {\n return Promise.resolve();\n }\n if (requestInit.body instanceof ReadableStream) {\n const { body, length } = _getBodyNonDestructively(requestInit.body);\n requestInit.body = body;\n\n return length;\n } else {\n return Promise.resolve(getXHRBodyLength(requestInit.body));\n }\n } else {\n const info = args[0];\n if (!info?.body) {\n return Promise.resolve();\n }\n\n return info\n .clone()\n .text()\n .then(t => getByteLength(t));\n }\n}\n\nfunction _getBodyNonDestructively(body: ReadableStream) {\n // can't read a ReadableStream without destroying it\n // but we CAN pipe it through and return a new ReadableStream\n\n // some (older) platforms don't expose the pipeThrough method and in that scenario, we're out of luck;\n // there's no way to read the stream without consuming it.\n if (!body.pipeThrough) {\n DIAG_LOGGER.warn('Platform has ReadableStream but not pipeThrough!');\n return {\n body,\n length: Promise.resolve(undefined),\n };\n }\n\n let length = 0;\n let resolveLength: (l: number) => void;\n const lengthPromise = new Promise(resolve => {\n resolveLength = resolve;\n });\n\n const transform = new TransformStream({\n start() {},\n async transform(chunk, controller) {\n const bytearray = (await chunk) as Uint8Array;\n length += bytearray.byteLength;\n\n controller.enqueue(chunk);\n },\n flush() {\n resolveLength(length);\n },\n });\n\n return {\n body: body.pipeThrough(transform),\n length: lengthPromise,\n };\n}\n\n/**\n * Helper function to determine payload content length for XHR requests\n * @param body\n * @returns content length\n */\nexport function getXHRBodyLength(\n body: Document | XMLHttpRequestBodyInit\n): number | undefined {\n if (typeof Document !== 'undefined' && body instanceof Document) {\n return new XMLSerializer().serializeToString(document).length;\n }\n // XMLHttpRequestBodyInit expands to the following:\n if (body instanceof Blob) {\n return body.size;\n }\n\n // ArrayBuffer | ArrayBufferView\n if ((body as any).byteLength !== undefined) {\n return (body as any).byteLength as number;\n }\n\n if (body instanceof FormData) {\n return getFormDataSize(body);\n }\n\n if (body instanceof URLSearchParams) {\n return getByteLength(body.toString());\n }\n\n if (typeof body === 'string') {\n return getByteLength(body);\n }\n\n DIAG_LOGGER.warn('unknown body type');\n return undefined;\n}\n\nconst TEXT_ENCODER = new TextEncoder();\nfunction getByteLength(s: string): number {\n return TEXT_ENCODER.encode(s).byteLength;\n}\n\nfunction getFormDataSize(formData: FormData): number {\n let size = 0;\n for (const [key, value] of formData.entries()) {\n size += key.length;\n if (value instanceof Blob) {\n size += value.size;\n } else {\n size += value.length;\n }\n }\n return size;\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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.57.1';\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\nexport enum EventNames {\n METHOD_OPEN = 'open',\n METHOD_SEND = 'send',\n EVENT_ABORT = 'abort',\n EVENT_ERROR = 'error',\n EVENT_LOAD = 'loaded',\n EVENT_TIMEOUT = 'timeout',\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\nimport * as api from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationConfig,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport * as core from '@opentelemetry/core';\nimport * as web from '@opentelemetry/sdk-trace-web';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\nimport { FetchError, FetchResponse, SpanData } from './types';\nimport { getFetchBodyLength } from './utils';\nimport { VERSION } from './version';\nimport { _globalThis } from '@opentelemetry/core';\n\n// how long to wait for observer to collect information about resources\n// this is needed as event \"load\" is called before observer\n// hard to say how long it should really wait, seems like 300ms is\n// safe enough\nconst OBSERVER_WAIT_TIME_MS = 300;\n\nconst isNode = typeof process === 'object' && process.release?.name === 'node';\n\nexport interface FetchCustomAttributeFunction {\n (\n span: api.Span,\n request: Request | RequestInit,\n result: Response | FetchError\n ): void;\n}\n\n/**\n * FetchPlugin Config\n */\nexport interface FetchInstrumentationConfig extends InstrumentationConfig {\n // the number of timing resources is limited, after the limit\n // (chrome 250, safari 150) the information is not collected anymore\n // the only way to prevent that is to regularly clean the resources\n // whenever it is possible, this is needed only when PerformanceObserver\n // is not available\n clearTimingResources?: boolean;\n // urls which should include trace headers when origin doesn't match\n propagateTraceHeaderCorsUrls?: web.PropagateTraceHeaderCorsUrls;\n /**\n * URLs that partially match any regex in ignoreUrls will not be traced.\n * In addition, URLs that are _exact matches_ of strings in ignoreUrls will\n * also not be traced.\n */\n ignoreUrls?: Array;\n /** Function for adding custom attributes on the span */\n applyCustomAttributesOnSpan?: FetchCustomAttributeFunction;\n // Ignore adding network events as span events\n ignoreNetworkEvents?: boolean;\n /** Measure outgoing request size */\n measureRequestSize?: boolean;\n}\n\n/**\n * This class represents a fetch plugin for auto instrumentation\n */\nexport class FetchInstrumentation extends InstrumentationBase {\n readonly component: string = 'fetch';\n readonly version: string = VERSION;\n moduleName = this.component;\n private _usedResources = new WeakSet();\n private _tasksCount = 0;\n\n constructor(config: FetchInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-fetch', VERSION, config);\n }\n\n init(): void {}\n\n /**\n * Add cors pre flight child span\n * @param span\n * @param corsPreFlightRequest\n */\n private _addChildSpan(\n span: api.Span,\n corsPreFlightRequest: PerformanceResourceTiming\n ): void {\n const childSpan = this.tracer.startSpan(\n 'CORS Preflight',\n {\n startTime: corsPreFlightRequest[web.PerformanceTimingNames.FETCH_START],\n },\n api.trace.setSpan(api.context.active(), span)\n );\n web.addSpanNetworkEvents(\n childSpan,\n corsPreFlightRequest,\n this.getConfig().ignoreNetworkEvents\n );\n childSpan.end(\n corsPreFlightRequest[web.PerformanceTimingNames.RESPONSE_END]\n );\n }\n\n /**\n * Adds more attributes to span just before ending it\n * @param span\n * @param response\n */\n private _addFinalSpanAttributes(\n span: api.Span,\n response: FetchResponse\n ): void {\n const parsedUrl = web.parseUrl(response.url);\n span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, response.status);\n if (response.statusText != null) {\n span.setAttribute(AttributeNames.HTTP_STATUS_TEXT, response.statusText);\n }\n span.setAttribute(SEMATTRS_HTTP_HOST, parsedUrl.host);\n span.setAttribute(\n SEMATTRS_HTTP_SCHEME,\n parsedUrl.protocol.replace(':', '')\n );\n if (typeof navigator !== 'undefined') {\n span.setAttribute(SEMATTRS_HTTP_USER_AGENT, navigator.userAgent);\n }\n }\n\n /**\n * Add headers\n * @param options\n * @param spanUrl\n */\n private _addHeaders(options: Request | RequestInit, spanUrl: string): void {\n if (\n !web.shouldPropagateTraceHeaders(\n spanUrl,\n this.getConfig().propagateTraceHeaderCorsUrls\n )\n ) {\n const headers: Partial> = {};\n api.propagation.inject(api.context.active(), headers);\n if (Object.keys(headers).length > 0) {\n this._diag.debug('headers inject skipped due to CORS policy');\n }\n return;\n }\n\n if (options instanceof Request) {\n api.propagation.inject(api.context.active(), options.headers, {\n set: (h, k, v) => h.set(k, typeof v === 'string' ? v : String(v)),\n });\n } else if (options.headers instanceof Headers) {\n api.propagation.inject(api.context.active(), options.headers, {\n set: (h, k, v) => h.set(k, typeof v === 'string' ? v : String(v)),\n });\n } else if (options.headers instanceof Map) {\n api.propagation.inject(api.context.active(), options.headers, {\n set: (h, k, v) => h.set(k, typeof v === 'string' ? v : String(v)),\n });\n } else {\n const headers: Partial> = {};\n api.propagation.inject(api.context.active(), headers);\n options.headers = Object.assign({}, headers, options.headers || {});\n }\n }\n\n /**\n * Clears the resource timings and all resources assigned with spans\n * when {@link FetchPluginConfig.clearTimingResources} is\n * set to true (default false)\n * @private\n */\n private _clearResources() {\n if (this._tasksCount === 0 && this.getConfig().clearTimingResources) {\n performance.clearResourceTimings();\n this._usedResources = new WeakSet();\n }\n }\n\n /**\n * Creates a new span\n * @param url\n * @param options\n */\n private _createSpan(\n url: string,\n options: Partial = {}\n ): api.Span | undefined {\n if (core.isUrlIgnored(url, this.getConfig().ignoreUrls)) {\n this._diag.debug('ignoring span as url matches ignored url');\n return;\n }\n const method = (options.method || 'GET').toUpperCase();\n const spanName = `HTTP ${method}`;\n return this.tracer.startSpan(spanName, {\n kind: api.SpanKind.CLIENT,\n attributes: {\n [AttributeNames.COMPONENT]: this.moduleName,\n [SEMATTRS_HTTP_METHOD]: method,\n [SEMATTRS_HTTP_URL]: url,\n },\n });\n }\n\n /**\n * Finds appropriate resource and add network events to the span\n * @param span\n * @param resourcesObserver\n * @param endTime\n */\n private _findResourceAndAddNetworkEvents(\n span: api.Span,\n resourcesObserver: SpanData,\n endTime: api.HrTime\n ): void {\n let resources: PerformanceResourceTiming[] = resourcesObserver.entries;\n if (!resources.length) {\n if (!performance.getEntriesByType) {\n return;\n }\n // fallback - either Observer is not available or it took longer\n // then OBSERVER_WAIT_TIME_MS and observer didn't collect enough\n // information\n resources = performance.getEntriesByType(\n 'resource'\n ) as PerformanceResourceTiming[];\n }\n const resource = web.getResource(\n resourcesObserver.spanUrl,\n resourcesObserver.startTime,\n endTime,\n resources,\n this._usedResources,\n 'fetch'\n );\n\n if (resource.mainRequest) {\n const mainRequest = resource.mainRequest;\n this._markResourceAsUsed(mainRequest);\n\n const corsPreFlightRequest = resource.corsPreFlightRequest;\n if (corsPreFlightRequest) {\n this._addChildSpan(span, corsPreFlightRequest);\n this._markResourceAsUsed(corsPreFlightRequest);\n }\n web.addSpanNetworkEvents(\n span,\n mainRequest,\n this.getConfig().ignoreNetworkEvents\n );\n }\n }\n\n /**\n * Marks certain [resource]{@link PerformanceResourceTiming} when information\n * from this is used to add events to span.\n * This is done to avoid reusing the same resource again for next span\n * @param resource\n */\n private _markResourceAsUsed(resource: PerformanceResourceTiming): void {\n this._usedResources.add(resource);\n }\n\n /**\n * Finish span, add attributes, network events etc.\n * @param span\n * @param spanData\n * @param response\n */\n private _endSpan(\n span: api.Span,\n spanData: SpanData,\n response: FetchResponse\n ) {\n const endTime = core.millisToHrTime(Date.now());\n const performanceEndTime = core.hrTime();\n this._addFinalSpanAttributes(span, response);\n\n setTimeout(() => {\n spanData.observer?.disconnect();\n this._findResourceAndAddNetworkEvents(span, spanData, performanceEndTime);\n this._tasksCount--;\n this._clearResources();\n span.end(endTime);\n }, OBSERVER_WAIT_TIME_MS);\n }\n\n /**\n * Patches the constructor of fetch\n */\n private _patchConstructor(): (original: typeof fetch) => typeof fetch {\n return original => {\n const plugin = this;\n return function patchConstructor(\n this: typeof globalThis,\n ...args: Parameters\n ): Promise {\n const self = this;\n const url = web.parseUrl(\n args[0] instanceof Request ? args[0].url : String(args[0])\n ).href;\n\n const options = args[0] instanceof Request ? args[0] : args[1] || {};\n const createdSpan = plugin._createSpan(url, options);\n if (!createdSpan) {\n return original.apply(this, args);\n }\n const spanData = plugin._prepareSpanData(url);\n\n if (plugin.getConfig().measureRequestSize) {\n getFetchBodyLength(...args)\n .then(length => {\n if (!length) return;\n\n createdSpan.setAttribute(\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n length\n );\n })\n .catch(error => {\n plugin._diag.warn('getFetchBodyLength', error);\n });\n }\n\n function endSpanOnError(span: api.Span, error: FetchError) {\n plugin._applyAttributesAfterFetch(span, options, error);\n plugin._endSpan(span, spanData, {\n status: error.status || 0,\n statusText: error.message,\n url,\n });\n }\n\n function endSpanOnSuccess(span: api.Span, response: Response) {\n plugin._applyAttributesAfterFetch(span, options, response);\n if (response.status >= 200 && response.status < 400) {\n plugin._endSpan(span, spanData, response);\n } else {\n plugin._endSpan(span, spanData, {\n status: response.status,\n statusText: response.statusText,\n url,\n });\n }\n }\n\n function onSuccess(\n span: api.Span,\n resolve: (value: Response | PromiseLike) => void,\n response: Response\n ): void {\n try {\n const resClone = response.clone();\n const resClone4Hook = response.clone();\n const body = resClone.body;\n if (body) {\n const reader = body.getReader();\n const read = (): void => {\n reader.read().then(\n ({ done }) => {\n if (done) {\n endSpanOnSuccess(span, resClone4Hook);\n } else {\n read();\n }\n },\n error => {\n endSpanOnError(span, error);\n }\n );\n };\n read();\n } else {\n // some older browsers don't have .body implemented\n endSpanOnSuccess(span, response);\n }\n } finally {\n resolve(response);\n }\n }\n\n function onError(\n span: api.Span,\n reject: (reason?: unknown) => void,\n error: FetchError\n ) {\n try {\n endSpanOnError(span, error);\n } finally {\n reject(error);\n }\n }\n\n return new Promise((resolve, reject) => {\n return api.context.with(\n api.trace.setSpan(api.context.active(), createdSpan),\n () => {\n plugin._addHeaders(options, url);\n plugin._tasksCount++;\n // TypeScript complains about arrow function captured a this typed as globalThis\n // ts(7041)\n return original\n .apply(\n self,\n options instanceof Request ? [options] : [url, options]\n )\n .then(\n onSuccess.bind(self, createdSpan, resolve),\n onError.bind(self, createdSpan, reject)\n );\n }\n );\n });\n };\n };\n }\n\n private _applyAttributesAfterFetch(\n span: api.Span,\n request: Request | RequestInit,\n result: Response | FetchError\n ) {\n const applyCustomAttributesOnSpan =\n this.getConfig().applyCustomAttributesOnSpan;\n if (applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () => applyCustomAttributesOnSpan(span, request, result),\n error => {\n if (!error) {\n return;\n }\n\n this._diag.error('applyCustomAttributesOnSpan', error);\n },\n true\n );\n }\n }\n\n /**\n * Prepares a span data - needed later for matching appropriate network\n * resources\n * @param spanUrl\n */\n private _prepareSpanData(spanUrl: string): SpanData {\n const startTime = core.hrTime();\n const entries: PerformanceResourceTiming[] = [];\n if (typeof PerformanceObserver !== 'function') {\n return { entries, startTime, spanUrl };\n }\n\n const observer = new PerformanceObserver(list => {\n const perfObsEntries = list.getEntries() as PerformanceResourceTiming[];\n perfObsEntries.forEach(entry => {\n if (entry.initiatorType === 'fetch' && entry.name === spanUrl) {\n entries.push(entry);\n }\n });\n });\n observer.observe({\n entryTypes: ['resource'],\n });\n return { entries, observer, startTime, spanUrl };\n }\n\n /**\n * implements enable function\n */\n override enable(): void {\n if (isNode) {\n // Node.js v18+ *does* have a global `fetch()`, but this package does not\n // support instrumenting it.\n this._diag.warn(\n \"this instrumentation is intended for web usage only, it does not instrument Node.js's fetch()\"\n );\n return;\n }\n if (isWrapped(fetch)) {\n this._unwrap(_globalThis, 'fetch');\n this._diag.debug('removing previous patch for constructor');\n }\n this._wrap(_globalThis, 'fetch', this._patchConstructor());\n }\n\n /**\n * implements unpatch function\n */\n override disable(): void {\n if (isNode) {\n return;\n }\n this._unwrap(_globalThis, 'fetch');\n this._usedResources = new WeakSet();\n }\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// Much of the logic here overlaps with the same utils file in opentelemetry-instrumentation-fetch\n// These may be unified in the future.\n\nimport * as api from '@opentelemetry/api';\n\nconst DIAG_LOGGER = api.diag.createComponentLogger({\n namespace:\n '@opentelemetry/opentelemetry-instrumentation-xml-http-request/utils',\n});\n\n/**\n * Helper function to determine payload content length for XHR requests\n * @param body\n * @returns content length\n */\nexport function getXHRBodyLength(\n body: Document | XMLHttpRequestBodyInit\n): number | undefined {\n if (typeof Document !== 'undefined' && body instanceof Document) {\n return new XMLSerializer().serializeToString(document).length;\n }\n // XMLHttpRequestBodyInit expands to the following:\n if (body instanceof Blob) {\n return body.size;\n }\n\n // ArrayBuffer | ArrayBufferView\n if ((body as any).byteLength !== undefined) {\n return (body as any).byteLength as number;\n }\n\n if (body instanceof FormData) {\n return getFormDataSize(body);\n }\n\n if (body instanceof URLSearchParams) {\n return getByteLength(body.toString());\n }\n\n if (typeof body === 'string') {\n return getByteLength(body);\n }\n\n DIAG_LOGGER.warn('unknown body type');\n return undefined;\n}\n\nconst TEXT_ENCODER = new TextEncoder();\nfunction getByteLength(s: string): number {\n return TEXT_ENCODER.encode(s).byteLength;\n}\n\nfunction getFormDataSize(formData: FormData): number {\n let size = 0;\n for (const [key, value] of formData.entries()) {\n size += key.length;\n if (value instanceof Blob) {\n size += value.size;\n } else {\n size += value.length;\n }\n }\n return size;\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// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.57.1';\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/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n HTTP_STATUS_TEXT = 'http.status_text',\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\nimport * as api from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationConfig,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { hrTime, isUrlIgnored, otperformance } from '@opentelemetry/core';\nimport {\n SEMATTRS_HTTP_HOST,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_SCHEME,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\nimport {\n addSpanNetworkEvents,\n getResource,\n PerformanceTimingNames as PTN,\n shouldPropagateTraceHeaders,\n parseUrl,\n} from '@opentelemetry/sdk-trace-web';\nimport { EventNames } from './enums/EventNames';\nimport {\n OpenFunction,\n PropagateTraceHeaderCorsUrls,\n SendFunction,\n XhrMem,\n} from './types';\nimport { getXHRBodyLength } from './utils';\nimport { VERSION } from './version';\nimport { AttributeNames } from './enums/AttributeNames';\n\n// how long to wait for observer to collect information about resources\n// this is needed as event \"load\" is called before observer\n// hard to say how long it should really wait, seems like 300ms is\n// safe enough\nconst OBSERVER_WAIT_TIME_MS = 300;\n\nexport type XHRCustomAttributeFunction = (\n span: api.Span,\n xhr: XMLHttpRequest\n) => void;\n\n/**\n * XMLHttpRequest config\n */\nexport interface XMLHttpRequestInstrumentationConfig\n extends InstrumentationConfig {\n /**\n * The number of timing resources is limited, after the limit\n * (chrome 250, safari 150) the information is not collected anymore.\n * The only way to prevent that is to regularly clean the resources\n * whenever it is possible. This is needed only when PerformanceObserver\n * is not available\n */\n clearTimingResources?: boolean;\n /** URLs which should include trace headers when origin doesn't match */\n propagateTraceHeaderCorsUrls?: PropagateTraceHeaderCorsUrls;\n /**\n * URLs that partially match any regex in ignoreUrls will not be traced.\n * In addition, URLs that are _exact matches_ of strings in ignoreUrls will\n * also not be traced.\n */\n ignoreUrls?: Array;\n /** Function for adding custom attributes on the span */\n applyCustomAttributesOnSpan?: XHRCustomAttributeFunction;\n /** Ignore adding network events as span events */\n ignoreNetworkEvents?: boolean;\n /** Measure outgoing request size */\n measureRequestSize?: boolean;\n}\n\n/**\n * This class represents a XMLHttpRequest plugin for auto instrumentation\n */\nexport class XMLHttpRequestInstrumentation extends InstrumentationBase {\n readonly component: string = 'xml-http-request';\n readonly version: string = VERSION;\n moduleName = this.component;\n\n private _tasksCount = 0;\n private _xhrMem = new WeakMap();\n private _usedResources = new WeakSet();\n\n constructor(config: XMLHttpRequestInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-xml-http-request', VERSION, config);\n }\n\n init() {}\n\n /**\n * Adds custom headers to XMLHttpRequest\n * @param xhr\n * @param spanUrl\n * @private\n */\n private _addHeaders(xhr: XMLHttpRequest, spanUrl: string) {\n const url = parseUrl(spanUrl).href;\n if (\n !shouldPropagateTraceHeaders(\n url,\n this.getConfig().propagateTraceHeaderCorsUrls\n )\n ) {\n const headers: Partial> = {};\n api.propagation.inject(api.context.active(), headers);\n if (Object.keys(headers).length > 0) {\n this._diag.debug('headers inject skipped due to CORS policy');\n }\n return;\n }\n const headers: { [key: string]: unknown } = {};\n api.propagation.inject(api.context.active(), headers);\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, String(headers[key]));\n });\n }\n\n /**\n * Add cors pre flight child span\n * @param span\n * @param corsPreFlightRequest\n * @private\n */\n private _addChildSpan(\n span: api.Span,\n corsPreFlightRequest: PerformanceResourceTiming\n ): void {\n api.context.with(api.trace.setSpan(api.context.active(), span), () => {\n const childSpan = this.tracer.startSpan('CORS Preflight', {\n startTime: corsPreFlightRequest[PTN.FETCH_START],\n });\n addSpanNetworkEvents(\n childSpan,\n corsPreFlightRequest,\n this.getConfig().ignoreNetworkEvents\n );\n childSpan.end(corsPreFlightRequest[PTN.RESPONSE_END]);\n });\n }\n\n /**\n * Add attributes when span is going to end\n * @param span\n * @param xhr\n * @param spanUrl\n * @private\n */\n _addFinalSpanAttributes(span: api.Span, xhrMem: XhrMem, spanUrl?: string) {\n if (typeof spanUrl === 'string') {\n const parsedUrl = parseUrl(spanUrl);\n if (xhrMem.status !== undefined) {\n span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, xhrMem.status);\n }\n if (xhrMem.statusText !== undefined) {\n span.setAttribute(AttributeNames.HTTP_STATUS_TEXT, xhrMem.statusText);\n }\n span.setAttribute(SEMATTRS_HTTP_HOST, parsedUrl.host);\n span.setAttribute(\n SEMATTRS_HTTP_SCHEME,\n parsedUrl.protocol.replace(':', '')\n );\n\n // @TODO do we want to collect this or it will be collected earlier once only or\n // maybe when parent span is not available ?\n span.setAttribute(SEMATTRS_HTTP_USER_AGENT, navigator.userAgent);\n }\n }\n\n private _applyAttributesAfterXHR(span: api.Span, xhr: XMLHttpRequest) {\n const applyCustomAttributesOnSpan =\n this.getConfig().applyCustomAttributesOnSpan;\n if (typeof applyCustomAttributesOnSpan === 'function') {\n safeExecuteInTheMiddle(\n () => applyCustomAttributesOnSpan(span, xhr),\n error => {\n if (!error) {\n return;\n }\n\n this._diag.error('applyCustomAttributesOnSpan', error);\n },\n true\n );\n }\n }\n\n /**\n * will collect information about all resources created\n * between \"send\" and \"end\" with additional waiting for main resource\n * @param xhr\n * @param spanUrl\n * @private\n */\n private _addResourceObserver(xhr: XMLHttpRequest, spanUrl: string) {\n const xhrMem = this._xhrMem.get(xhr);\n if (\n !xhrMem ||\n typeof PerformanceObserver !== 'function' ||\n typeof PerformanceResourceTiming !== 'function'\n ) {\n return;\n }\n xhrMem.createdResources = {\n observer: new PerformanceObserver(list => {\n const entries = list.getEntries() as PerformanceResourceTiming[];\n const parsedUrl = parseUrl(spanUrl);\n\n entries.forEach(entry => {\n if (\n entry.initiatorType === 'xmlhttprequest' &&\n entry.name === parsedUrl.href\n ) {\n if (xhrMem.createdResources) {\n xhrMem.createdResources.entries.push(entry);\n }\n }\n });\n }),\n entries: [],\n };\n xhrMem.createdResources.observer.observe({\n entryTypes: ['resource'],\n });\n }\n\n /**\n * Clears the resource timings and all resources assigned with spans\n * when {@link XMLHttpRequestInstrumentationConfig.clearTimingResources} is\n * set to true (default false)\n * @private\n */\n private _clearResources() {\n if (this._tasksCount === 0 && this.getConfig().clearTimingResources) {\n (otperformance as unknown as Performance).clearResourceTimings();\n this._xhrMem = new WeakMap();\n this._usedResources = new WeakSet();\n }\n }\n\n /**\n * Finds appropriate resource and add network events to the span\n * @param span\n */\n private _findResourceAndAddNetworkEvents(\n xhrMem: XhrMem,\n span: api.Span,\n spanUrl?: string,\n startTime?: api.HrTime,\n endTime?: api.HrTime\n ): void {\n if (!spanUrl || !startTime || !endTime || !xhrMem.createdResources) {\n return;\n }\n\n let resources: PerformanceResourceTiming[] =\n xhrMem.createdResources.entries;\n\n if (!resources || !resources.length) {\n // fallback - either Observer is not available or it took longer\n // then OBSERVER_WAIT_TIME_MS and observer didn't collect enough\n // information\n // ts thinks this is the perf_hooks module, but it is the browser performance api\n resources = (otperformance as unknown as Performance).getEntriesByType(\n 'resource'\n ) as PerformanceResourceTiming[];\n }\n\n const resource = getResource(\n parseUrl(spanUrl).href,\n startTime,\n endTime,\n resources,\n this._usedResources\n );\n\n if (resource.mainRequest) {\n const mainRequest = resource.mainRequest;\n this._markResourceAsUsed(mainRequest);\n\n const corsPreFlightRequest = resource.corsPreFlightRequest;\n if (corsPreFlightRequest) {\n this._addChildSpan(span, corsPreFlightRequest);\n this._markResourceAsUsed(corsPreFlightRequest);\n }\n addSpanNetworkEvents(\n span,\n mainRequest,\n this.getConfig().ignoreNetworkEvents\n );\n }\n }\n\n /**\n * Removes the previous information about span.\n * This might happened when the same xhr is used again.\n * @param xhr\n * @private\n */\n private _cleanPreviousSpanInformation(xhr: XMLHttpRequest) {\n const xhrMem = this._xhrMem.get(xhr);\n if (xhrMem) {\n const callbackToRemoveEvents = xhrMem.callbackToRemoveEvents;\n if (callbackToRemoveEvents) {\n callbackToRemoveEvents();\n }\n this._xhrMem.delete(xhr);\n }\n }\n\n /**\n * Creates a new span when method \"open\" is called\n * @param xhr\n * @param url\n * @param method\n * @private\n */\n private _createSpan(\n xhr: XMLHttpRequest,\n url: string,\n method: string\n ): api.Span | undefined {\n if (isUrlIgnored(url, this.getConfig().ignoreUrls)) {\n this._diag.debug('ignoring span as url matches ignored url');\n return;\n }\n const spanName = method.toUpperCase();\n\n const currentSpan = this.tracer.startSpan(spanName, {\n kind: api.SpanKind.CLIENT,\n attributes: {\n [SEMATTRS_HTTP_METHOD]: method,\n [SEMATTRS_HTTP_URL]: parseUrl(url).toString(),\n },\n });\n\n currentSpan.addEvent(EventNames.METHOD_OPEN);\n\n this._cleanPreviousSpanInformation(xhr);\n\n this._xhrMem.set(xhr, {\n span: currentSpan,\n spanUrl: url,\n });\n\n return currentSpan;\n }\n\n /**\n * Marks certain [resource]{@link PerformanceResourceTiming} when information\n * from this is used to add events to span.\n * This is done to avoid reusing the same resource again for next span\n * @param resource\n * @private\n */\n private _markResourceAsUsed(resource: PerformanceResourceTiming) {\n this._usedResources.add(resource);\n }\n\n /**\n * Patches the method open\n * @private\n */\n protected _patchOpen() {\n return (original: OpenFunction): OpenFunction => {\n const plugin = this;\n return function patchOpen(this: XMLHttpRequest, ...args): void {\n const method: string = args[0];\n const url: string = args[1];\n plugin._createSpan(this, url, method);\n\n return original.apply(this, args);\n };\n };\n }\n\n /**\n * Patches the method send\n * @private\n */\n protected _patchSend() {\n const plugin = this;\n\n function endSpanTimeout(\n eventName: string,\n xhrMem: XhrMem,\n performanceEndTime: api.HrTime,\n endTime: number\n ) {\n const callbackToRemoveEvents = xhrMem.callbackToRemoveEvents;\n\n if (typeof callbackToRemoveEvents === 'function') {\n callbackToRemoveEvents();\n }\n\n const { span, spanUrl, sendStartTime } = xhrMem;\n\n if (span) {\n plugin._findResourceAndAddNetworkEvents(\n xhrMem,\n span,\n spanUrl,\n sendStartTime,\n performanceEndTime\n );\n span.addEvent(eventName, endTime);\n plugin._addFinalSpanAttributes(span, xhrMem, spanUrl);\n span.end(endTime);\n plugin._tasksCount--;\n }\n plugin._clearResources();\n }\n\n function endSpan(eventName: string, xhr: XMLHttpRequest) {\n const xhrMem = plugin._xhrMem.get(xhr);\n if (!xhrMem) {\n return;\n }\n xhrMem.status = xhr.status;\n xhrMem.statusText = xhr.statusText;\n plugin._xhrMem.delete(xhr);\n\n if (xhrMem.span) {\n plugin._applyAttributesAfterXHR(xhrMem.span, xhr);\n }\n const performanceEndTime = hrTime();\n const endTime = Date.now();\n\n // the timeout is needed as observer doesn't have yet information\n // when event \"load\" is called. Also the time may differ depends on\n // browser and speed of computer\n setTimeout(() => {\n endSpanTimeout(eventName, xhrMem, performanceEndTime, endTime);\n }, OBSERVER_WAIT_TIME_MS);\n }\n\n function onError(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_ERROR, this);\n }\n\n function onAbort(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_ABORT, this);\n }\n\n function onTimeout(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_TIMEOUT, this);\n }\n\n function onLoad(this: XMLHttpRequest) {\n if (this.status < 299) {\n endSpan(EventNames.EVENT_LOAD, this);\n } else {\n endSpan(EventNames.EVENT_ERROR, this);\n }\n }\n\n function unregister(xhr: XMLHttpRequest) {\n xhr.removeEventListener('abort', onAbort);\n xhr.removeEventListener('error', onError);\n xhr.removeEventListener('load', onLoad);\n xhr.removeEventListener('timeout', onTimeout);\n const xhrMem = plugin._xhrMem.get(xhr);\n if (xhrMem) {\n xhrMem.callbackToRemoveEvents = undefined;\n }\n }\n\n return (original: SendFunction): SendFunction => {\n return function patchSend(this: XMLHttpRequest, ...args): void {\n const xhrMem = plugin._xhrMem.get(this);\n if (!xhrMem) {\n return original.apply(this, args);\n }\n const currentSpan = xhrMem.span;\n const spanUrl = xhrMem.spanUrl;\n\n if (currentSpan && spanUrl) {\n if (plugin.getConfig().measureRequestSize && args?.[0]) {\n const body = args[0];\n const bodyLength = getXHRBodyLength(body);\n if (bodyLength !== undefined) {\n currentSpan.setAttribute(\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n bodyLength\n );\n }\n }\n\n api.context.with(\n api.trace.setSpan(api.context.active(), currentSpan),\n () => {\n plugin._tasksCount++;\n xhrMem.sendStartTime = hrTime();\n currentSpan.addEvent(EventNames.METHOD_SEND);\n\n this.addEventListener('abort', onAbort);\n this.addEventListener('error', onError);\n this.addEventListener('load', onLoad);\n this.addEventListener('timeout', onTimeout);\n\n xhrMem.callbackToRemoveEvents = () => {\n unregister(this);\n if (xhrMem.createdResources) {\n xhrMem.createdResources.observer.disconnect();\n }\n };\n plugin._addHeaders(this, spanUrl);\n plugin._addResourceObserver(this, spanUrl);\n }\n );\n }\n return original.apply(this, args);\n };\n };\n }\n\n /**\n * implements enable function\n */\n override enable() {\n this._diag.debug('applying patch to', this.moduleName, this.version);\n\n if (isWrapped(XMLHttpRequest.prototype.open)) {\n this._unwrap(XMLHttpRequest.prototype, 'open');\n this._diag.debug('removing previous patch from method open');\n }\n\n if (isWrapped(XMLHttpRequest.prototype.send)) {\n this._unwrap(XMLHttpRequest.prototype, 'send');\n this._diag.debug('removing previous patch from method send');\n }\n\n this._wrap(XMLHttpRequest.prototype, 'open', this._patchOpen());\n this._wrap(XMLHttpRequest.prototype, 'send', this._patchSend());\n }\n\n /**\n * implements disable function\n */\n override disable() {\n this._diag.debug('removing patch from', this.moduleName, this.version);\n\n this._unwrap(XMLHttpRequest.prototype, 'open');\n this._unwrap(XMLHttpRequest.prototype, 'send');\n\n this._tasksCount = 0;\n this._xhrMem = new WeakMap();\n this._usedResources = new WeakSet();\n }\n}\n","import type { Span } from '@opentelemetry/api';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\nimport type { XMLHttpRequestInstrumentationConfig } from '@opentelemetry/instrumentation-xml-http-request';\nimport type { OpenFunction } from '@opentelemetry/instrumentation-xml-http-request/build/src/types';\n\ntype Parent = {\n _createSpan: (xhr: XMLHttpRequest, url: string, method: string) => Span | undefined;\n};\n\nexport class FaroXhrInstrumentation extends XMLHttpRequestInstrumentation {\n private parentCreateSpan: Parent['_createSpan'];\n\n constructor(config: XMLHttpRequestInstrumentationConfig = {}) {\n super(config);\n\n const self = this as any as Parent;\n this.parentCreateSpan = self._createSpan.bind(this);\n }\n\n // Patching the parent's private method to handle url type string or URL\n protected override _patchOpen() {\n return (original: OpenFunction): OpenFunction => {\n const plugin = this;\n return function patchOpen(this: XMLHttpRequest, ...args): void {\n const method: string = args[0];\n let url: string | URL = args[1];\n\n if (isInstanceOfURL(url)) {\n url = url.href;\n }\n\n plugin.parentCreateSpan(this, url, method);\n\n return original.apply(this, args);\n };\n };\n }\n}\n\nfunction isInstanceOfURL(item: any): item is URL {\n return item instanceof URL;\n}\n","import { Span, SpanStatusCode } from '@opentelemetry/api';\nimport type { FetchCustomAttributeFunction } from '@opentelemetry/instrumentation-fetch';\nimport type { XHRCustomAttributeFunction } from '@opentelemetry/instrumentation-xml-http-request';\n\nexport interface FetchError {\n status?: number;\n message: string;\n}\n\n/**\n * Adds HTTP status code to every span.\n *\n * The fetch instrumentation does not always set the span status to error as defined by the spec.\n * To work around that issue we manually set the span status.\n *\n * Issue: https://github.com/open-telemetry/opentelemetry-js/issues/3564\n * Spec: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/trace/semantic_conventions/http.md#status\n */\nexport function setSpanStatusOnFetchError(span: Span, _request: Request | RequestInit, result: Response | FetchError) {\n const httpStatusCode = result instanceof Error ? 0 : result.status;\n setSpanStatus(span, httpStatusCode);\n}\n\nexport function setSpanStatusOnXMLHttpRequestError(span: Span, xhr: XMLHttpRequest) {\n setSpanStatus(span, xhr.status);\n}\n\nfunction setSpanStatus(span: Span, httpStatusCode?: number) {\n if (httpStatusCode == null) {\n return;\n }\n\n const isError = httpStatusCode === 0;\n const isClientOrServerError = httpStatusCode >= 400 && httpStatusCode < 600;\n\n if (isError || isClientOrServerError) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n}\n\nexport function fetchCustomAttributeFunctionWithDefaults(callback?: FetchCustomAttributeFunction) {\n return (span: Span, request: Request | RequestInit, result: Response | FetchError) => {\n setSpanStatusOnFetchError(span, request, result);\n callback?.(span, request, result);\n };\n}\n\nexport function xhrCustomAttributeFunctionWithDefaults(callback?: XHRCustomAttributeFunction) {\n return (span: Span, xhr: XMLHttpRequest) => {\n setSpanStatusOnXMLHttpRequestError(span, xhr);\n callback?.(span, xhr);\n };\n}\n","import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\n\nimport { FaroXhrInstrumentation } from './faroXhrInstrumentation';\nimport {\n fetchCustomAttributeFunctionWithDefaults,\n xhrCustomAttributeFunctionWithDefaults,\n} from './instrumentationUtils';\nimport type { DefaultInstrumentationsOptions, InstrumentationOption } from './types';\n\nexport function getDefaultOTELInstrumentations(options: DefaultInstrumentationsOptions = {}): InstrumentationOption[] {\n const { fetchInstrumentationOptions, xhrInstrumentationOptions, ...sharedOptions } = options;\n\n const fetchOpts = createFetchInstrumentationOptions(fetchInstrumentationOptions, sharedOptions);\n const xhrOpts = createXhrInstrumentationOptions(xhrInstrumentationOptions, sharedOptions);\n\n return [new FetchInstrumentation(fetchOpts), new FaroXhrInstrumentation(xhrOpts)];\n}\nfunction createFetchInstrumentationOptions(\n fetchInstrumentationOptions: DefaultInstrumentationsOptions['fetchInstrumentationOptions'],\n sharedOptions: Record\n) {\n return {\n ...sharedOptions,\n ignoreNetworkEvents: true,\n // keep this here to overwrite the defaults above if provided by the users\n ...fetchInstrumentationOptions,\n // always keep this function\n applyCustomAttributesOnSpan: fetchCustomAttributeFunctionWithDefaults(\n fetchInstrumentationOptions?.applyCustomAttributesOnSpan\n ),\n };\n}\n\nfunction createXhrInstrumentationOptions(\n xhrInstrumentationOptions: DefaultInstrumentationsOptions['xhrInstrumentationOptions'],\n sharedOptions: Record\n) {\n return {\n ...sharedOptions,\n ignoreNetworkEvents: true,\n // keep this here to overwrite the defaults above if provided by the users\n ...xhrInstrumentationOptions,\n // always keep this function\n applyCustomAttributesOnSpan: xhrCustomAttributeFunctionWithDefaults(\n xhrInstrumentationOptions?.applyCustomAttributesOnSpan\n ),\n };\n}\n","import { SamplingDecision } from '@opentelemetry/sdk-trace-web';\n\nimport type { MetaSession } from '@grafana/faro-web-sdk';\n\nexport function getSamplingDecision(sessionMeta: MetaSession = {}): SamplingDecision {\n const isSessionSampled = sessionMeta.attributes?.['isSampled'] === 'true';\n const samplingDecision = isSessionSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD;\n\n return samplingDecision;\n}\n","import type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-web';\n// False positive. Package can be resolved.\n// eslint-disable-next-line import/no-unresolved\nimport { ATTR_SESSION_ID } from '@opentelemetry/semantic-conventions/incubating';\n\nimport type { Metas } from '@grafana/faro-web-sdk';\n\nexport class FaroSessionSpanProcessor implements SpanProcessor {\n constructor(\n private processor: SpanProcessor,\n private metas: Metas\n ) {}\n\n forceFlush(): Promise {\n return this.processor.forceFlush();\n }\n\n onStart(span: Span, parentContext: Context): void {\n const session = this.metas.value.session;\n\n if (session?.id) {\n span.attributes[ATTR_SESSION_ID] = session.id;\n /**\n * @deprecated will be removed in the future and has been replaced by ATTR_SESSION_ID (session.id)\n */\n span.attributes['session_id'] = session.id;\n }\n\n this.processor.onStart(span, parentContext);\n }\n\n onEnd(span: ReadableSpan): void {\n this.processor.onEnd(span);\n }\n\n shutdown(): Promise {\n return this.processor.shutdown();\n }\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//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.\n * \n * @example 10838bed-421f-43ef-870a-f43feacbbb5b\n * @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;\n\n/**\n * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).\n * \n * @example 33\n * @example 32\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ANDROID_OS_API_LEVEL = 'android.os.api_level' as const;\n\n/**\n * Deprecated use the `device.app.lifecycle` event definition including `android.state` as a payload field instead.\n * \n * @note The Android lifecycle states are defined in [Activity lifecycle callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc), and from which the `OS identifiers` are derived.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `device.app.lifecycle`.\n */\nexport const ATTR_ANDROID_STATE = 'android.state' as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_ANDROID_STATE}.\n */\nexport const ANDROID_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"created\" for attribute {@link ATTR_ANDROID_STATE}.\n */\nexport const ANDROID_STATE_VALUE_CREATED = \"created\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_ANDROID_STATE}.\n */\nexport const ANDROID_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * The provenance filename of the built attestation which directly relates to the build artifact filename. This filename **SHOULD** accompany the artifact at publish time. See the [SLSA Relationship](https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations) specification for more information.\n * \n * @example golang-binary-amd64-v0.1.0.attestation\n * @example docker-image-amd64-v0.1.0.intoto.json1\n * @example release-1.tar.gz.attestation\n * @example file-name-package.tar.gz.intoto.json1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the software attestation space also refer to this as the [digest](https://github.com/in-toto/attestation/blob/main/spec/README.md#in-toto-attestation-framework-spec).\n * \n * @example 1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash' as const;\n\n/**\n * The id of the build [software attestation](https://slsa.dev/attestation-model).\n * \n * @example 123\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_ATTESTATION_ID = 'artifact.attestation.id' as const;\n\n/**\n * The human readable file name of the artifact, typically generated during build and release processes. Often includes the package name and version in the file name.\n * \n * @example golang-binary-amd64-v0.1.0\n * @example docker-image-amd64-v0.1.0\n * @example release-1.tar.gz\n * @example file-name-package.tar.gz\n * \n * @note This file name can also act as the [Package Name](https://slsa.dev/spec/v1.0/terminology#package-model)\n * in cases where the package ecosystem maps accordingly.\n * Additionally, the artifact [can be published](https://slsa.dev/spec/v1.0/terminology#software-supply-chain)\n * for others, but that is not a guarantee.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_FILENAME = 'artifact.filename' as const;\n\n/**\n * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), often found in checksum.txt on a release of the artifact and used to verify package integrity.\n * \n * @example 9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9\n * \n * @note The specific algorithm used to create the cryptographic hash value is\n * not defined. In situations where an artifact has multiple\n * cryptographic hashes, it is up to the implementer to choose which\n * hash value to set here; this should be the most secure hash algorithm\n * that is suitable for the situation and consistent with the\n * corresponding attestation. The implementer can then provide the other\n * hash values through an additional set of attribute extensions as they\n * deem necessary.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_HASH = 'artifact.hash' as const;\n\n/**\n * The [Package URL](https://github.com/package-url/purl-spec) of the [package artifact](https://slsa.dev/spec/v1.0/terminology#package-model) provides a standard way to identify and locate the packaged artifact.\n * \n * @example pkg:github/package-url/purl-spec@1209109710924\n * @example pkg:npm/foo@12.12.3\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_PURL = 'artifact.purl' as const;\n\n/**\n * The version of the artifact.\n * \n * @example v0.1.0\n * @example 1.2.1\n * @example 122691-build\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_ARTIFACT_VERSION = 'artifact.version' as const;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n * \n * @example [\"{ \"AttributeName\": \"string\", \"AttributeType\": \"string\" }\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions' as const;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n * \n * @example [\"lives\", \"id\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get' as const;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read' as const;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n * \n * @example [\"{ \"CapacityUnits\": number, \"GlobalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"LocalSecondaryIndexes\": { \"string\" : { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }, \"ReadCapacityUnits\": number, \"Table\": { \"CapacityUnits\": number, \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number }, \"TableName\": \"string\", \"WriteCapacityUnits\": number }\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity' as const;\n\n/**\n * The value of the `Count` response parameter.\n * \n * @example 10\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count' as const;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n * \n * @example Users\n * @example CatsTable\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table' as const;\n\n/**\n * The JSON-serialized value of each item in the `GlobalSecondaryIndexUpdates` request field.\n * \n * @example [\"{ \"Create\": { \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates' as const;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field\n * \n * @example [\"{ \"IndexName\": \"string\", \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": number, \"WriteCapacityUnits\": number } }\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes' as const;\n\n/**\n * The value of the `IndexName` request parameter.\n * \n * @example name_to_group\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name' as const;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n * \n * @example { \"string\" : [ { \"ItemCollectionKey\": { \"string\" : { \"B\": blob, \"BOOL\": boolean, \"BS\": [ blob ], \"L\": [ \"AttributeValue\" ], \"M\": { \"string\" : \"AttributeValue\" }, \"N\": \"string\", \"NS\": [ \"string\" ], \"NULL\": boolean, \"S\": \"string\", \"SS\": [ \"string\" ] } }, \"SizeEstimateRangeGB\": [ number ] } ] }\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics' as const;\n\n/**\n * The value of the `Limit` request parameter.\n * \n * @example 10\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit' as const;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n * \n * @example [\"{ \"IndexArn\": \"string\", \"IndexName\": \"string\", \"IndexSizeBytes\": number, \"ItemCount\": number, \"KeySchema\": [ { \"AttributeName\": \"string\", \"KeyType\": \"string\" } ], \"Projection\": { \"NonKeyAttributes\": [ \"string\" ], \"ProjectionType\": \"string\" } }\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes' as const;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n * \n * @example Title\n * @example Title, Price, Color\n * @example Title, Description, RelatedItems, ProductReviews\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection' as const;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n * \n * @example 1.0\n * @example 2.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity' as const;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n * \n * @example 1.0\n * @example 2.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity' as const;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward' as const;\n\n/**\n * The value of the `ScannedCount` response parameter.\n * \n * @example 50\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count' as const;\n\n/**\n * The value of the `Segment` request parameter.\n * \n * @example 10\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment' as const;\n\n/**\n * The value of the `Select` request parameter.\n * \n * @example ALL_ATTRIBUTES\n * @example COUNT\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select' as const;\n\n/**\n * The number of items in the `TableNames` response parameter.\n * \n * @example 20\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count' as const;\n\n/**\n * The keys in the `RequestItems` object field.\n * \n * @example [\"Users\", \"Cats\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names' as const;\n\n/**\n * The value of the `TotalSegments` request parameter.\n * \n * @example 100\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments' as const;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n * \n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn' as const;\n\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 * @example arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn' as const;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype' as const;\n\n/**\n * Enum value \"ec2\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_EC2 = \"ec2\" as const;\n\n/**\n * Enum value \"fargate\" for attribute {@link ATTR_AWS_ECS_LAUNCHTYPE}.\n */\nexport const AWS_ECS_LAUNCHTYPE_VALUE_FARGATE = \"fargate\" as const;\n\n/**\n * The ARN of a running [ECS task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).\n * \n * @example arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b\n * @example arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn' as const;\n\n/**\n * The family name of the [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) used to create the ECS task.\n * \n * @example opentelemetry-family\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family' as const;\n\n/**\n * The revision for the task definition used to create the ECS task.\n * \n * @example 8\n * @example 26\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision' as const;\n\n/**\n * The ARN of an EKS cluster.\n * \n * @example arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn' as const;\n\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 * @example arn:aws:lambda:us-east-1:123456:function:myfunction:myalias\n * \n * @note This may be different from `cloud.resource_id` if an alias is involved.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn' as const;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n * \n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns' as const;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n * \n * @example [\"/aws/lambda/my-function\", \"opentelemetry-service\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_GROUP_NAMES = 'aws.log.group.names' as const;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n * \n * @example [\"arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns' as const;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n * \n * @example [\"logs/main/10838bed-421f-43ef-870a-f43feacbbb5b\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names' as const;\n\n/**\n * The AWS request ID as returned in the response headers `x-amz-request-id` or `x-amz-requestid`.\n * \n * @example 79b9da39-b7ae-508a-a6bc-864b2829c622\n * @example C9ER4AJX75574TDJ\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_REQUEST_ID = 'aws.request_id' as const;\n\n/**\n * The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n * \n * @example some-bucket-name\n * \n * @note The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter.\n * This applies to almost all S3 operations except `list-buckets`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_BUCKET = 'aws.s3.bucket' as const;\n\n/**\n * The source object (in the form `bucket`/`key`) for the copy operation.\n * \n * @example someFile.yml\n * \n * @note The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter\n * of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html).\n * This applies in particular to the following operations:\n * \n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_COPY_SOURCE = 'aws.s3.copy_source' as const;\n\n/**\n * The delete request container that specifies the objects to be deleted.\n * \n * @example Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean\n * \n * @note The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation.\n * The `delete` attribute corresponds to the `--delete` parameter of the\n * [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_DELETE = 'aws.s3.delete' as const;\n\n/**\n * The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations.\n * \n * @example someFile.yml\n * \n * @note The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter.\n * This applies in particular to the following operations:\n * \n * - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)\n * - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)\n * - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html)\n * - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)\n * - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)\n * - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html)\n * - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)\n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_KEY = 'aws.s3.key' as const;\n\n/**\n * The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.\n * \n * @example 3456\n * \n * @note The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations.\n * The `part_number` attribute corresponds to the `--part-number` parameter of the\n * [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_PART_NUMBER = 'aws.s3.part_number' as const;\n\n/**\n * Upload ID that identifies the multipart upload.\n * \n * @example dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ\n * \n * @note The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter\n * of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations.\n * This applies in particular to the following operations:\n * \n * - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)\n * - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)\n * - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)\n * - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)\n * - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AWS_S3_UPLOAD_ID = 'aws.s3.upload_id' as const;\n\n/**\n * [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client.\n * \n * @example Microsoft.Storage\n * @example Microsoft.KeyVault\n * @example Microsoft.ServiceBus\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZ_NAMESPACE = 'az.namespace' as const;\n\n/**\n * The unique identifier of the service request. It's generated by the Azure service and returned with the response.\n * \n * @example 00000000-0000-0000-0000-000000000000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_AZ_SERVICE_REQUEST_ID = 'az.service_request_id' as const;\n\n/**\n * Array of brand name and version separated by a space\n * \n * @example [\" Not A;Brand 99\", \"Chromium 99\", \"Chrome 99\"]\n * \n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_BRANDS = 'browser.brands' as const;\n\n/**\n * Preferred language of the user using the browser\n * \n * @example en\n * @example en-US\n * @example fr\n * @example fr-FR\n * \n * @note This value is intended to be taken from the Navigator API `navigator.language`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_LANGUAGE = 'browser.language' as const;\n\n/**\n * A boolean that is true if the browser is running on a mobile device\n * \n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute **SHOULD** be left unset.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_MOBILE = 'browser.mobile' as const;\n\n/**\n * The platform on which the browser is running\n * \n * @example Windows\n * @example macOS\n * @example Android\n * \n * @note This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API **SHOULD NOT** be used instead and this attribute **SHOULD** be left unset in order for the values to be consistent.\n * The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_BROWSER_PLATFORM = 'browser.platform' as const;\n\n/**\n * The human readable name of the pipeline within a CI/CD system.\n * \n * @example Build and Test\n * @example Lint\n * @example Deploy Go Project\n * @example deploy_to_environment\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name' as const;\n\n/**\n * The unique identifier of a pipeline run within a CI/CD system.\n * \n * @example 120912\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id' as const;\n\n/**\n * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://en.wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.\n * \n * @example Run GoLang Linter\n * @example Go Build\n * @example go-test\n * @example deploy_binary\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name' as const;\n\n/**\n * The unique identifier of a task run within a pipeline.\n * \n * @example 12097\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id' as const;\n\n/**\n * The [URL](https://en.wikipedia.org/wiki/URL) of the pipeline run providing the complete address in order to locate and identify the pipeline run.\n * \n * @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full' as const;\n\n/**\n * The type of the task within a pipeline.\n * \n * @example build\n * @example test\n * @example deploy\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type' as const;\n\n/**\n * Enum value \"build\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_BUILD = \"build\" as const;\n\n/**\n * Enum value \"deploy\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_DEPLOY = \"deploy\" as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_CICD_PIPELINE_TASK_TYPE}.\n */\nexport const CICD_PIPELINE_TASK_TYPE_VALUE_TEST = \"test\" as const;\n\n/**\n * The cloud account ID the resource is assigned to.\n * \n * @example 111111111111\n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\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 * @example us-east-1c\n * \n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PLATFORM = 'cloud.platform' as const;\n\n/**\n * Enum value \"alibaba_cloud_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS = \"alibaba_cloud_ecs\" as const;\n\n/**\n * Enum value \"alibaba_cloud_fc\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC = \"alibaba_cloud_fc\" as const;\n\n/**\n * Enum value \"alibaba_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_OPENSHIFT = \"alibaba_cloud_openshift\" as const;\n\n/**\n * Enum value \"aws_app_runner\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_APP_RUNNER = \"aws_app_runner\" as const;\n\n/**\n * Enum value \"aws_ec2\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EC2 = \"aws_ec2\" as const;\n\n/**\n * Enum value \"aws_ecs\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ECS = \"aws_ecs\" as const;\n\n/**\n * Enum value \"aws_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_EKS = \"aws_eks\" as const;\n\n/**\n * Enum value \"aws_elastic_beanstalk\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK = \"aws_elastic_beanstalk\" as const;\n\n/**\n * Enum value \"aws_lambda\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_LAMBDA = \"aws_lambda\" as const;\n\n/**\n * Enum value \"aws_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AWS_OPENSHIFT = \"aws_openshift\" as const;\n\n/**\n * Enum value \"azure_aks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_AKS = \"azure_aks\" as const;\n\n/**\n * Enum value \"azure_app_service\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE = \"azure_app_service\" as const;\n\n/**\n * Enum value \"azure_container_apps\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_APPS = \"azure_container_apps\" as const;\n\n/**\n * Enum value \"azure_container_instances\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES = \"azure_container_instances\" as const;\n\n/**\n * Enum value \"azure_functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS = \"azure_functions\" as const;\n\n/**\n * Enum value \"azure_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_OPENSHIFT = \"azure_openshift\" as const;\n\n/**\n * Enum value \"azure_vm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_AZURE_VM = \"azure_vm\" as const;\n\n/**\n * Enum value \"gcp_app_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE = \"gcp_app_engine\" as const;\n\n/**\n * Enum value \"gcp_bare_metal_solution\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_BARE_METAL_SOLUTION = \"gcp_bare_metal_solution\" as const;\n\n/**\n * Enum value \"gcp_cloud_functions\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS = \"gcp_cloud_functions\" as const;\n\n/**\n * Enum value \"gcp_cloud_run\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN = \"gcp_cloud_run\" as const;\n\n/**\n * Enum value \"gcp_compute_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE = \"gcp_compute_engine\" as const;\n\n/**\n * Enum value \"gcp_kubernetes_engine\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE = \"gcp_kubernetes_engine\" as const;\n\n/**\n * Enum value \"gcp_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_GCP_OPENSHIFT = \"gcp_openshift\" as const;\n\n/**\n * Enum value \"ibm_cloud_openshift\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_IBM_CLOUD_OPENSHIFT = \"ibm_cloud_openshift\" as const;\n\n/**\n * Enum value \"tencent_cloud_cvm\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_CVM = \"tencent_cloud_cvm\" as const;\n\n/**\n * Enum value \"tencent_cloud_eks\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_EKS = \"tencent_cloud_eks\" as const;\n\n/**\n * Enum value \"tencent_cloud_scf\" for attribute {@link ATTR_CLOUD_PLATFORM}.\n */\nexport const CLOUD_PLATFORM_VALUE_TENCENT_CLOUD_SCF = \"tencent_cloud_scf\" as const;\n\n/**\n * Name of the cloud provider.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"heroku\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_HEROKU = \"heroku\" as const;\n\n/**\n * Enum value \"ibm_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_IBM_CLOUD = \"ibm_cloud\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_CLOUD_PROVIDER}.\n */\nexport const CLOUD_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * The geographical region the resource is running.\n * \n * @example us-central1\n * @example us-east-1\n * \n * @note Refer to your provider'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/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP)\n * \n * @example arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function\n * @example //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID\n * @example /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/\n * \n * @note On some cloud providers, it may not be possible to determine the full ID at startup,\n * so it may be necessary to set `cloud.resource_id` as a span attribute instead.\n * \n * The exact value to use for `cloud.resource_id` depends on the cloud provider.\n * The following well-known definitions **MUST** be used if you set this attribute and they apply:\n * \n * - **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\n * Take care not to use the \"invoked ARN\" directly but replace any\n * [alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html)\n * with the resolved function version, as the same runtime instance may be invocable with\n * multiple different 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/rest/api/resources/resources/get-by-id) of the invoked function,\n * *not* the function app, having the form\n * `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`.\n * This means that a span attribute **MUST** be used, as an Azure function app can host multiple functions that would usually share\n * a TracerProvider.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_RESOURCE_ID = 'cloud.resource_id' as const;\n\n/**\n * The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event.\n * \n * @example 123e4567-e89b-12d3-a456-426614174000\n * @example 0001\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_ID = 'cloudevents.event_id' as const;\n\n/**\n * The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened.\n * \n * @example https://github.com/cloudevents\n * @example /cloudevents/spec/pull/123\n * @example my-service\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SOURCE = 'cloudevents.event_source' as const;\n\n/**\n * The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses.\n * \n * @example \"1.0\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SPEC_VERSION = 'cloudevents.event_spec_version' as const;\n\n/**\n * The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source).\n * \n * @example \"mynewfile.jpg\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_SUBJECT = 'cloudevents.event_subject' as const;\n\n/**\n * The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence.\n * \n * @example com.github.pull_request.opened\n * @example com.example.object.deleted.v2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type' as const;\n\n/**\n * The guid of the application.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_id`. This is the same value as\n * reported by `cf app --guid`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id' as const;\n\n/**\n * The index of the application instance. 0 when just one instance is active.\n * \n * @example 0\n * @example 1\n * \n * @note CloudFoundry defines the `instance_id` in the [Loggegator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the application instance index for applications\n * deployed on the runtime.\n * \n * Application instrumentation should use the value from environment\n * variable `CF_INSTANCE_INDEX`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_INSTANCE_ID = 'cloudfoundry.app.instance.id' as const;\n\n/**\n * The name of the application.\n * \n * @example my-app-name\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.application_name`. This is the same value\n * as reported by `cf apps`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_APP_NAME = 'cloudfoundry.app.name' as const;\n\n/**\n * The guid of the CloudFoundry org the application is running in.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_id`. This is the same value as\n * reported by `cf org --guid`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_ID = 'cloudfoundry.org.id' as const;\n\n/**\n * The name of the CloudFoundry organization the app is running in.\n * \n * @example my-org-name\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.org_name`. This is the same value as\n * reported by `cf orgs`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_ORG_NAME = 'cloudfoundry.org.name' as const;\n\n/**\n * The UID identifying the process.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to\n * `VCAP_APPLICATION.app_id` for applications deployed to the runtime.\n * For system components, this could be the actual PID.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_ID = 'cloudfoundry.process.id' as const;\n\n/**\n * The type of process.\n * \n * @example web\n * \n * @note CloudFoundry applications can consist of multiple jobs. Usually the\n * main process will be of type `web`. There can be additional background\n * tasks or side-cars with different process types.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_PROCESS_TYPE = 'cloudfoundry.process.type' as const;\n\n/**\n * The guid of the CloudFoundry space the application is running in.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_id`. This is the same value as\n * reported by `cf space --guid`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_ID = 'cloudfoundry.space.id' as const;\n\n/**\n * The name of the CloudFoundry space the application is running in.\n * \n * @example my-space-name\n * \n * @note Application instrumentation should use the value from environment\n * variable `VCAP_APPLICATION.space_name`. This is the same value as\n * reported by `cf spaces`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SPACE_NAME = 'cloudfoundry.space.name' as const;\n\n/**\n * A guid or another name describing the event source.\n * \n * @example cf/gorouter\n * \n * @note CloudFoundry defines the `source_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the component name, e.g. \"gorouter\", for\n * CloudFoundry components.\n * \n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.id` should be set to\n * `spec.deployment/spec.name`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_ID = 'cloudfoundry.system.id' as const;\n\n/**\n * A guid describing the concrete instance of the event source.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).\n * It is used for logs and metrics emitted by CloudFoundry. It is\n * supposed to contain the vm id for CloudFoundry components.\n * \n * When system components are instrumented, values from the\n * [Bosh spec](https://bosh.io/docs/jobs/#properties-spec)\n * should be used. The `system.instance.id` should be set to `spec.id`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUDFOUNDRY_SYSTEM_INSTANCE_ID = 'cloudfoundry.system.instance.id' as const;\n\n/**\n * The column number in `code.filepath` best representing the operation. It **SHOULD** point within the code unit named in `code.function`.\n * \n * @example 16\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_COLUMN = 'code.column' as const;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n * \n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_FILEPATH = 'code.filepath' as const;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n * \n * @example \"serveRequest\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_FUNCTION = 'code.function' as const;\n\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 * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_LINENO = 'code.lineno' as const;\n\n/**\n * The \"namespace\" 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 * @example \"com.example.MyHttpService\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_NAMESPACE = 'code.namespace' as const;\n\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 \"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 * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\n/**\n * The command used to run the container (i.e. the command name).\n * \n * @example otelcontribcol\n * \n * @note If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND = 'container.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) run by the container.\n * \n * @example [\"otelcontribcol\", \"--config\", \"config.yaml\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_ARGS = 'container.command_args' as const;\n\n/**\n * The full command run by the container as a single string representing the full command.\n * \n * @example otelcontribcol --config config.yaml\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_COMMAND_LINE = 'container.command_line' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n * \n * @example user\n * @example kernel\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `cpu.mode`\n */\nexport const ATTR_CONTAINER_CPU_STATE = 'container.cpu.state' as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n */\nexport const CONTAINER_CPU_STATE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n */\nexport const CONTAINER_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CONTAINER_CPU_STATE}.\n */\nexport const CONTAINER_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The name of the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin used by the volume.\n * \n * @example pd.csi.storage.gke.io\n * \n * @note This can sometimes be referred to as a \"driver\" in CSI implementations. This should represent the `name` field of the GetPluginInfo RPC.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_PLUGIN_NAME = 'container.csi.plugin.name' as const;\n\n/**\n * The unique volume ID returned by the CSI ([Container Storage Interface](https://github.com/container-storage-interface/spec)) plugin.\n * \n * @example projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk\n * \n * @note This can sometimes be referred to as a \"volume handle\" in CSI implementations. This should represent the `Volume.volume_id` field in CSI spec.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_CSI_VOLUME_ID = 'container.csi.volume.id' as const;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n * \n * @example a3bf90e006b2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Runtime specific image identifier. Usually a hash algorithm followed by a UUID.\n * \n * @example sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f\n * \n * @note Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint.\n * K8s defines a link to the container registry repository with digest `\"imageID\": \"registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625\"`.\n * The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_ID = 'container.image.id' as const;\n\n/**\n * Name of the image the container was built on.\n * \n * @example gcr.io/opentelemetry/operator\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Repo digests of the container image as provided by the container runtime.\n * \n * @example [\"example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb\", \"internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578\"]\n * \n * @note [Docker](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n * \n * @example [\"v1.27.1\", \"3.5.7-0\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container labels, `` being the label name, the value being the label value.\n * \n * @example container.label.app=nginx\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_LABEL = (key: string) => `container.label.${key}`;\n\n/**\n * Deprecated, use `container.label` instead.\n * \n * @example container.label.app=nginx\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `container.label`.\n */\nexport const ATTR_CONTAINER_LABELS = (key: string) => `container.labels.${key}`;\n\n/**\n * Container name used by container runtime.\n * \n * @example opentelemetry-autoconf\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The container runtime managing this container.\n * \n * @example docker\n * @example containerd\n * @example rkt\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_RUNTIME = 'container.runtime' as const;\n\n/**\n * The mode of the CPU\n * \n * @example user\n * @example system\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CPU_MODE = 'cpu.mode' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_CPU_MODE}.\n */\nexport const CPU_MODE_VALUE_USER = \"user\" as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level' as const;\n\n/**\n * Enum value \"all\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL = \"all\" as const;\n\n/**\n * Enum value \"any\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY = \"any\" as const;\n\n/**\n * Enum value \"each_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM = \"each_quorum\" as const;\n\n/**\n * Enum value \"local_one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE = \"local_one\" as const;\n\n/**\n * Enum value \"local_quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM = \"local_quorum\" as const;\n\n/**\n * Enum value \"local_serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL = \"local_serial\" as const;\n\n/**\n * Enum value \"one\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE = \"one\" as const;\n\n/**\n * Enum value \"quorum\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM = \"quorum\" as const;\n\n/**\n * Enum value \"serial\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL = \"serial\" as const;\n\n/**\n * Enum value \"three\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE = \"three\" as const;\n\n/**\n * Enum value \"two\" for attribute {@link ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL}.\n */\nexport const DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO = \"two\" as const;\n\n/**\n * The data center of the coordinating node for a query.\n * \n * @example \"us-west-2\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc' as const;\n\n/**\n * The ID of the coordinating node for a query.\n * \n * @example \"be13faa2-8574-4d71-926d-27f16cf8a7af\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id' as const;\n\n/**\n * Whether or not the query is idempotent.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence' as const;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n * \n * @example 5000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size' as const;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n * \n * @example 0\n * @example 2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n * \n * @example \"mytable\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_CASSANDRA_TABLE = 'db.cassandra.table' as const;\n\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n * \n * @example myDataSource\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name' as const;\n\n/**\n * The state of a connection in the pool\n * \n * @example idle\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\n * \n * @example myDataSource\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_POOL_NAME = 'db.client.connections.pool.name' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\n * \n * @example idle\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_DB_CLIENT_CONNECTIONS_STATE = 'db.client.connections.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTIONS_STATE}.\n */\nexport const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = \"used\" as const;\n\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 without attempting to do any case normalization.\n * If the collection name is parsed from the query text, it **SHOULD** be the first collection name found in the query and it **SHOULD** match the value provided in the query text including any schema and database name prefix.\n * For batch operations, if the individual operations are known to have the same collection name then that collection name **SHOULD** be used, otherwise `db.collection.name` **SHOULD NOT** be captured.\n * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n * \n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Unique Cosmos client instance id.\n * \n * @example \"3ba4827d-4422-483f-b59f-85b74211c11d\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id' as const;\n\n/**\n * Cosmos client connection mode.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode' as const;\n\n/**\n * Enum value \"direct\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = \"direct\" as const;\n\n/**\n * Enum value \"gateway\" for attribute {@link ATTR_DB_COSMOSDB_CONNECTION_MODE}.\n */\nexport const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = \"gateway\" as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n * \n * @example \"mytable\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container' as const;\n\n/**\n * Cosmos DB Operation Type.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type' as const;\n\n/**\n * Enum value \"batch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_BATCH = \"batch\" as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"execute\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE = \"execute\" as const;\n\n/**\n * Enum value \"execute_javascript\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_EXECUTE_JAVASCRIPT = \"execute_javascript\" as const;\n\n/**\n * Enum value \"head\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD = \"head\" as const;\n\n/**\n * Enum value \"head_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_HEAD_FEED = \"head_feed\" as const;\n\n/**\n * Enum value \"invalid\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_INVALID = \"invalid\" as const;\n\n/**\n * Enum value \"patch\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_PATCH = \"patch\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"query_plan\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_QUERY_PLAN = \"query_plan\" as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"read_feed\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_READ_FEED = \"read_feed\" as const;\n\n/**\n * Enum value \"replace\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = \"replace\" as const;\n\n/**\n * Enum value \"upsert\" for attribute {@link ATTR_DB_COSMOSDB_OPERATION_TYPE}.\n */\nexport const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = \"upsert\" as const;\n\n/**\n * RU consumed for that operation\n * \n * @example 46.18\n * @example 1.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge' as const;\n\n/**\n * Request payload size in bytes\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length' as const;\n\n/**\n * Deprecated, use `db.response.status_code` instead.\n * \n * @example 200\n * @example 201\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.response.status_code`.\n */\nexport const ATTR_DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code' as const;\n\n/**\n * Cosmos DB sub status code.\n * \n * @example 1000\n * @example 1002\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n * \n * @example e9106fc68e3044f0b1475b04bf4ffd5f\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name' as const;\n\n/**\n * Represents the human-readable identifier of the node/instance to which a request was routed.\n * \n * @example instance-0000000001\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name' as const;\n\n/**\n * A dynamic value in the url path.\n * \n * @example db.elasticsearch.path_parts.index=test-index\n * @example db.elasticsearch.path_parts.doc_id=123\n * \n * @note Many Elasticsearch url paths allow dynamic values. These **SHOULD** be recorded in span attributes in the format `db.elasticsearch.path_parts.`, where `` is the url path part name. The implementation **SHOULD** reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) in order to map the path part values to their names.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_ELASTICSEARCH_PATH_PARTS = (key: string) => `db.elasticsearch.path_parts.${key}`;\n\n/**\n * Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n * \n * @example \"mysql-e26b99z.example.com\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead.\n */\nexport const ATTR_DB_INSTANCE_ID = 'db.instance.id' as const;\n\n/**\n * Removed, no replacement at this time.\n * \n * @example org.postgresql.Driver\n * @example com.microsoft.sqlserver.jdbc.SQLServerDriver\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Removed as not used.\n */\nexport const ATTR_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n * \n * @example \"mytable\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute.\n * \n * @example \"MSSQLSERVER\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Deprecated, no replacement at this time.\n */\nexport const ATTR_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n * \n * @example customers\n * @example main\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\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 (potentially using database system specific conventions) from most general to most specific namespace component, and more specific namespaces **SHOULD NOT** be captured without the more general namespaces, to ensure that \"startswith\" queries for the more general namespaces will be valid.\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 * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n * \n * @example findAndModify\n * @example HMSET\n * @example SELECT\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\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 * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\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 without attempting to do any case normalization.\n * If the operation name is parsed from the query text, it **SHOULD** be the first operation name found in the query.\n * For batch operations, if the individual operations are known to have the same operation name then that operation name **SHOULD** be used prepended by `BATCH `, otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database system specific term if more applicable.\n * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\n/**\n * A query parameter used in `db.query.text`, with `` being the parameter name, and the attribute value being a string representation of the parameter value.\n * \n * @example someval\n * @example 55\n * \n * @note Query parameters should only be captured when `db.query.text` is parameterized with placeholders.\n * If a parameter has no name and instead is referenced only by index, then `` **SHOULD** be the 0-based index.\n * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;\n\n/**\n * The database query being executed.\n * \n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey \"WuValue\"\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 * 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 * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n * \n * @example 0\n * @example 1\n * @example 15\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index' as const;\n\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 * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n * \n * @example \"mytable\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n * \n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\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` is set to `postgresql` based on the instrumentation's best knowledge.\n * This attribute has stability level RELEASE CANDIDATE.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Enum value \"adabas\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_ADABAS = \"adabas\" as const;\n\n/**\n * Enum value \"cache\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_CACHE = \"cache\" as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_CASSANDRA = \"cassandra\" as const;\n\n/**\n * Enum value \"clickhouse\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_CLICKHOUSE = \"clickhouse\" as const;\n\n/**\n * Enum value \"cloudscape\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_CLOUDSCAPE = \"cloudscape\" as const;\n\n/**\n * Enum value \"cockroachdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_COCKROACHDB = \"cockroachdb\" as const;\n\n/**\n * Enum value \"coldfusion\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_COLDFUSION = \"coldfusion\" as const;\n\n/**\n * Enum value \"cosmosdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_COSMOSDB = \"cosmosdb\" as const;\n\n/**\n * Enum value \"couchbase\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_COUCHBASE = \"couchbase\" as const;\n\n/**\n * Enum value \"couchdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_COUCHDB = \"couchdb\" as const;\n\n/**\n * Enum value \"db2\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_DB2 = \"db2\" as const;\n\n/**\n * Enum value \"derby\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_DERBY = \"derby\" as const;\n\n/**\n * Enum value \"dynamodb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_DYNAMODB = \"dynamodb\" as const;\n\n/**\n * Enum value \"edb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_EDB = \"edb\" as const;\n\n/**\n * Enum value \"elasticsearch\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_ELASTICSEARCH = \"elasticsearch\" as const;\n\n/**\n * Enum value \"filemaker\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_FILEMAKER = \"filemaker\" as const;\n\n/**\n * Enum value \"firebird\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_FIREBIRD = \"firebird\" as const;\n\n/**\n * Enum value \"firstsql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_FIRSTSQL = \"firstsql\" as const;\n\n/**\n * Enum value \"geode\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_GEODE = \"geode\" as const;\n\n/**\n * Enum value \"h2\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_H2 = \"h2\" as const;\n\n/**\n * Enum value \"hanadb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_HANADB = \"hanadb\" as const;\n\n/**\n * Enum value \"hbase\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_HBASE = \"hbase\" as const;\n\n/**\n * Enum value \"hive\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_HIVE = \"hive\" as const;\n\n/**\n * Enum value \"hsqldb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_HSQLDB = \"hsqldb\" as const;\n\n/**\n * Enum value \"influxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INFLUXDB = \"influxdb\" as const;\n\n/**\n * Enum value \"informix\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INFORMIX = \"informix\" as const;\n\n/**\n * Enum value \"ingres\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INGRES = \"ingres\" as const;\n\n/**\n * Enum value \"instantdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INSTANTDB = \"instantdb\" as const;\n\n/**\n * Enum value \"interbase\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INTERBASE = \"interbase\" as const;\n\n/**\n * Enum value \"intersystems_cache\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_INTERSYSTEMS_CACHE = \"intersystems_cache\" as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"maxdb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MAXDB = \"maxdb\" as const;\n\n/**\n * Enum value \"memcached\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MEMCACHED = \"memcached\" as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = \"mongodb\" as const;\n\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = \"mssql\" as const;\n\n/**\n * Enum value \"mssqlcompact\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MSSQLCOMPACT = \"mssqlcompact\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"neo4j\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_NEO4J = \"neo4j\" as const;\n\n/**\n * Enum value \"netezza\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_NETEZZA = \"netezza\" as const;\n\n/**\n * Enum value \"opensearch\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_OPENSEARCH = \"opensearch\" as const;\n\n/**\n * Enum value \"oracle\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_ORACLE = \"oracle\" as const;\n\n/**\n * Enum value \"other_sql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_OTHER_SQL = \"other_sql\" as const;\n\n/**\n * Enum value \"pervasive\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_PERVASIVE = \"pervasive\" as const;\n\n/**\n * Enum value \"pointbase\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POINTBASE = \"pointbase\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Enum value \"progress\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_PROGRESS = \"progress\" as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_REDIS = \"redis\" as const;\n\n/**\n * Enum value \"redshift\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_REDSHIFT = \"redshift\" as const;\n\n/**\n * Enum value \"spanner\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_SPANNER = \"spanner\" as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_SQLITE = \"sqlite\" as const;\n\n/**\n * Enum value \"sybase\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_SYBASE = \"sybase\" as const;\n\n/**\n * Enum value \"teradata\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_TERADATA = \"teradata\" as const;\n\n/**\n * Enum value \"trino\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_TRINO = \"trino\" as const;\n\n/**\n * Enum value \"vertica\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_VERTICA = \"vertica\" as const;\n\n/**\n * Deprecated, no replacement at this time.\n * \n * @example readonly_user\n * @example reporting_user\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated No replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * 'Deprecated, use `deployment.environment.name` instead.'\n * \n * @example staging\n * @example production\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Deprecated, use `deployment.environment.name` instead.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment' as const;\n\n/**\n * Name of the [deployment environment](https://wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n * \n * @example staging\n * @example production\n * \n * @note `deployment.environment.name` does not affect the uniqueness constraints defined through\n * the `service.namespace`, `service.name` and `service.instance.id` resource attributes.\n * This implies that resources carrying the following attribute combinations **MUST** be\n * considered to be identifying the same service:\n * \n * - `service.name=frontend`, `deployment.environment.name=production`\n * - `service.name=frontend`, `deployment.environment.name=staging`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = 'deployment.environment.name' as const;\n\n/**\n * The id of the deployment.\n * \n * @example 1208\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_ID = 'deployment.id' as const;\n\n/**\n * The name of the deployment.\n * \n * @example deploy my app\n * @example deploy-frontend\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_NAME = 'deployment.name' as const;\n\n/**\n * The status of the deployment.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEPLOYMENT_STATUS = 'deployment.status' as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n */\nexport const DEPLOYMENT_STATUS_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"succeeded\" for attribute {@link ATTR_DEPLOYMENT_STATUS}.\n */\nexport const DEPLOYMENT_STATUS_VALUE_SUCCEEDED = \"succeeded\" as const;\n\n/**\n * Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n * \n * @example destination.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n * \n * @note When observed from the source side, and when communicating through an intermediary, `destination.address` **SHOULD** represent the destination address behind any intermediaries, for example proxies, if it's available.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_ADDRESS = 'destination.address' as const;\n\n/**\n * Destination port number\n * \n * @example 3389\n * @example 2888\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DESTINATION_PORT = 'destination.port' as const;\n\n/**\n * A unique identifier representing the device\n * \n * @example 2ab2916d-a51f-4ac8-80ee-45ac31a28092\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_ID = 'device.id' as const;\n\n/**\n * The name of the device manufacturer\n * \n * @example Apple\n * @example Samsung\n * \n * @note The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps **SHOULD** hardcode the value `Apple`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MANUFACTURER = 'device.manufacturer' as const;\n\n/**\n * The model identifier for the device\n * \n * @example iPhone3,4\n * @example SM-G920F\n * \n * @note It'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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier' as const;\n\n/**\n * The marketing name for the device model\n * \n * @example iPhone 6s Plus\n * @example Samsung Galaxy S6\n * \n * @note It's recommended this value represents a human-readable version of the device model rather than a machine-readable alternative.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DEVICE_MODEL_NAME = 'device.model.name' as const;\n\n/**\n * The disk IO operation direction.\n * \n * @example read\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DISK_IO_DIRECTION = 'disk.io.direction' as const;\n\n/**\n * Enum value \"read\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n */\nexport const DISK_IO_DIRECTION_VALUE_READ = \"read\" as const;\n\n/**\n * Enum value \"write\" for attribute {@link ATTR_DISK_IO_DIRECTION}.\n */\nexport const DISK_IO_DIRECTION_VALUE_WRITE = \"write\" as const;\n\n/**\n * The name being queried.\n * \n * @example www.example.com\n * @example opentelemetry.io\n * \n * @note If the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\\\\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \\\\t, \\\\r, and \\\\n respectively.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DNS_QUESTION_NAME = 'dns.question.name' as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n * \n * @example gen0\n * @example gen1\n * @example gen2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\n/**\n * Deprecated, use `user.id` instead.\n * \n * @example \"username\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `user.id` attribute.\n */\nexport const ATTR_ENDUSER_ID = 'enduser.id' as const;\n\n/**\n * Deprecated, use `user.roles` instead.\n * \n * @example \"admin\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `user.roles` attribute.\n */\nexport const ATTR_ENDUSER_ROLE = 'enduser.role' as const;\n\n/**\n * Deprecated, no replacement at this time.\n * \n * @example \"read:message, write:files\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Removed.\n */\nexport const ATTR_ENDUSER_SCOPE = 'enduser.scope' as const;\n\n/**\n * Identifies the class / type of event.\n * \n * @example browser.mouse.click\n * @example device.app.lifecycle\n * \n * @note Event names are subject to the same rules as [attribute names](/docs/general/attribute-naming.md). Notably, event names are namespaced to avoid collisions and provide a clean separation of semantics for events in separate domains like browser, mobile, and kubernetes.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_EVENT_NAME = 'event.name' as const;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_COLDSTART = 'faas.coldstart' as const;\n\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 * @example \"0/5 * * * ? *\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_CRON = 'faas.cron' as const;\n\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 * @example myBucketName\n * @example myDbName\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection' as const;\n\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 * @example myFile.txt\n * @example myTableName\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_NAME = 'faas.document.name' as const;\n\n/**\n * Describes the type of the operation that was performed on the data.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_OPERATION = 'faas.document.operation' as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"edit\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_EDIT = \"edit\" as const;\n\n/**\n * Enum value \"insert\" for attribute {@link ATTR_FAAS_DOCUMENT_OPERATION}.\n */\nexport const FAAS_DOCUMENT_OPERATION_VALUE_INSERT = \"insert\" as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time' as const;\n\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 * @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de\n * \n * @note * **AWS Lambda:** Use the (full) log stream name.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INSTANCE = 'faas.instance' as const;\n\n/**\n * The invocation ID of the current function invocation.\n * \n * @example \"af9d5aa4-a685-4c5f-a22b-444f80b3cc28\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOCATION_ID = 'faas.invocation_id' as const;\n\n/**\n * The name of the invoked function.\n * \n * @example \"my-function\"\n * \n * @note **SHOULD** be equal to the `faas.name` resource attribute of the invoked function.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_NAME = 'faas.invoked_name' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider' as const;\n\n/**\n * Enum value \"alibaba_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD = \"alibaba_cloud\" as const;\n\n/**\n * Enum value \"aws\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AWS = \"aws\" as const;\n\n/**\n * Enum value \"azure\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_AZURE = \"azure\" as const;\n\n/**\n * Enum value \"gcp\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_GCP = \"gcp\" as const;\n\n/**\n * Enum value \"tencent_cloud\" for attribute {@link ATTR_FAAS_INVOKED_PROVIDER}.\n */\nexport const FAAS_INVOKED_PROVIDER_VALUE_TENCENT_CLOUD = \"tencent_cloud\" as const;\n\n/**\n * The cloud region of the invoked function.\n * \n * @example \"eu-central-1\"\n * \n * @note **SHOULD** be equal to the `cloud.region` resource attribute of the invoked function.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_INVOKED_REGION = 'faas.invoked_region' as const;\n\n/**\n * The amount of memory available to the serverless function converted to Bytes.\n * \n * @example 134217728\n * \n * @note It'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 (which must be multiplied by 1,048,576).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_MAX_MEMORY = 'faas.max_memory' as const;\n\n/**\n * The name of the single function that this runtime instance executes.\n * \n * @example my-function\n * @example myazurefunctionapp/some-function-name\n * \n * @note This is the name of the function as configured/deployed on the FaaS\n * platform and is usually different from the name of the callback\n * function (which may be stored in the\n * [`code.namespace`/`code.function`](/docs/general/attributes.md#source-code-attributes)\n * span attributes).\n * \n * For some cloud providers, the above definition is ambiguous. The following\n * definition of function name **MUST** be used for this attribute\n * (and consequently the span name) for the listed cloud providers/products:\n * \n * - **Azure:** The full name `/`, i.e., function app name\n * followed by a forward slash followed by the function name (this form\n * can also be seen in the resource JSON for the function).\n * This means that a span attribute **MUST** be used, as an Azure function\n * app can host multiple functions that would usually share\n * a TracerProvider (see also the `cloud.resource_id` attribute).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_NAME = 'faas.name' as const;\n\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 * @example \"2020-01-23T13:47:06Z\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TIME = 'faas.time' as const;\n\n/**\n * Type of the trigger which caused this function invocation.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_TRIGGER = 'faas.trigger' as const;\n\n/**\n * Enum value \"datasource\" for attribute {@link ATTR_FAAS_TRIGGER}.\n */\nexport const FAAS_TRIGGER_VALUE_DATASOURCE = \"datasource\" as const;\n\n/**\n * Enum value \"http\" for attribute {@link ATTR_FAAS_TRIGGER}.\n */\nexport const FAAS_TRIGGER_VALUE_HTTP = \"http\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_FAAS_TRIGGER}.\n */\nexport const FAAS_TRIGGER_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pubsub\" for attribute {@link ATTR_FAAS_TRIGGER}.\n */\nexport const FAAS_TRIGGER_VALUE_PUBSUB = \"pubsub\" as const;\n\n/**\n * Enum value \"timer\" for attribute {@link ATTR_FAAS_TRIGGER}.\n */\nexport const FAAS_TRIGGER_VALUE_TIMER = \"timer\" as const;\n\n/**\n * The immutable version of the function being executed.\n * \n * @example 26\n * @example pinkfroid-00002\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 (Services):** 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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FAAS_VERSION = 'faas.version' as const;\n\n/**\n * The unique identifier of the feature flag.\n * \n * @example logo-color\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;\n\n/**\n * The name of the service provider that performs the flag evaluation.\n * \n * @example Flag Manager\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider_name' as const;\n\n/**\n * **SHOULD** be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used.\n * \n * @example red\n * @example true\n * @example on\n * \n * @note A semantic identifier, commonly referred to as a variant, provides a means\n * for referring to a value without including the value itself. This can\n * provide additional context for understanding the meaning behind a value.\n * For example, the variant `red` maybe be used for the value `#c05543`.\n * \n * A stringified version of the value can be used in situations where a\n * semantic identifier is unavailable. String representation of the value\n * should be determined by the implementer.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant' as const;\n\n/**\n * Time when the file was last accessed, in ISO 8601 format.\n * \n * @example 2021-01-01T12:00:00Z\n * \n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ACCESSED = 'file.accessed' as const;\n\n/**\n * Array of file attributes.\n * \n * @example [\"readonly\", \"hidden\"]\n * \n * @note Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected for this attribute: `archive`, `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, `write`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_ATTRIBUTES = 'file.attributes' as const;\n\n/**\n * Time when the file attributes or metadata was last changed, in ISO 8601 format.\n * \n * @example 2021-01-01T12:00:00Z\n * \n * @note `file.changed` captures the time when any of the file's properties or attributes (including the content) are changed, while `file.modified` captures the timestamp when the file content is modified.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CHANGED = 'file.changed' as const;\n\n/**\n * Time when the file was created, in ISO 8601 format.\n * \n * @example 2021-01-01T12:00:00Z\n * \n * @note This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_CREATED = 'file.created' as const;\n\n/**\n * Directory where the file is located. It should include the drive letter, when appropriate.\n * \n * @example /home/user\n * @example C:\\\\Program Files\\\\MyApp\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_DIRECTORY = 'file.directory' as const;\n\n/**\n * File extension, excluding the leading dot.\n * \n * @example png\n * @example gz\n * \n * @note When the file name has multiple extensions (example.tar.gz), only the last one should be captured (\"gz\", not \"tar.gz\").\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_EXTENSION = 'file.extension' as const;\n\n/**\n * Name of the fork. A fork is additional data associated with a filesystem object.\n * \n * @example Zone.Identifer\n * \n * @note On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\n * On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: C:\\\\path\\\\to\\\\filename.extension:some_fork_name, and some_fork_name is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_FORK_NAME = 'file.fork_name' as const;\n\n/**\n * Primary Group ID (GID) of the file.\n * \n * @example 1000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_ID = 'file.group.id' as const;\n\n/**\n * Primary group name of the file.\n * \n * @example users\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_GROUP_NAME = 'file.group.name' as const;\n\n/**\n * Inode representing the file in the filesystem.\n * \n * @example 256383\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_INODE = 'file.inode' as const;\n\n/**\n * Mode of the file in octal representation.\n * \n * @example 0640\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODE = 'file.mode' as const;\n\n/**\n * Time when the file content was last modified, in ISO 8601 format.\n * \n * @example 2021-01-01T12:00:00Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_MODIFIED = 'file.modified' as const;\n\n/**\n * Name of the file including the extension, without the directory.\n * \n * @example example.png\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_NAME = 'file.name' as const;\n\n/**\n * The user ID (UID) or security identifier (SID) of the file owner.\n * \n * @example 1000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_OWNER_ID = 'file.owner.id' as const;\n\n/**\n * Username of the file owner.\n * \n * @example root\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_OWNER_NAME = 'file.owner.name' as const;\n\n/**\n * Full path to the file, including the file name. It should include the drive letter, when appropriate.\n * \n * @example /home/alice/example.png\n * @example C:\\\\Program Files\\\\MyApp\\\\myapp.exe\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_PATH = 'file.path' as const;\n\n/**\n * File size in bytes.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SIZE = 'file.size' as const;\n\n/**\n * Path to the target of a symbolic link.\n * \n * @example /usr/bin/python3\n * \n * @note This attribute is only applicable to symbolic links.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_FILE_SYMBOLIC_LINK_TARGET_PATH = 'file.symbolic_link.target_path' as const;\n\n/**\n * Identifies the Google Cloud service for which the official client library is intended.\n * \n * @example appengine\n * @example run\n * @example firestore\n * @example alloydb\n * @example spanner\n * \n * @note Intended to be a stable identifier for Google Cloud client libraries that is uniform across implementation languages. The value should be derived from the canonical service domain for the service; for example, 'foo.googleapis.com' should result in a value of 'foo'.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLIENT_SERVICE = 'gcp.client.service' as const;\n\n/**\n * The name of the Cloud Run [execution](https://cloud.google.com/run/docs/managing/job-executions) being run for the Job, as set by the [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n * \n * @example job-name-xxxx\n * @example sample-job-mdw84\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_EXECUTION = 'gcp.cloud_run.job.execution' as const;\n\n/**\n * The index for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) environment variable.\n * \n * @example 0\n * @example 1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_CLOUD_RUN_JOB_TASK_INDEX = 'gcp.cloud_run.job.task_index' as const;\n\n/**\n * The hostname of a GCE instance. This is the full value of the default or [custom hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).\n * \n * @example my-host1234.example.com\n * @example sample-vm.us-west1-b.c.my-project.internal\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_HOSTNAME = 'gcp.gce.instance.hostname' as const;\n\n/**\n * The instance name of a GCE instance. This is the value provided by `host.name`, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the [default internal DNS name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).\n * \n * @example instance-1\n * @example my-vm-name\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GCP_GCE_INSTANCE_NAME = 'gcp.gce.instance.name' as const;\n\n/**\n * Deprecated, use Event API to report completions contents.\n * \n * @example [{'role': 'assistant', 'content': 'The capital of France is Paris.'}]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_GEN_AI_COMPLETION = 'gen_ai.completion' as const;\n\n/**\n * The response format that is requested.\n * \n * @example json\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format' as const;\n\n/**\n * Enum value \"json_object\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_OBJECT = \"json_object\" as const;\n\n/**\n * Enum value \"json_schema\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_JSON_SCHEMA = \"json_schema\" as const;\n\n/**\n * Enum value \"text\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT}.\n */\nexport const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = \"text\" as const;\n\n/**\n * Requests with same seed value more likely to return same result.\n * \n * @example 100\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed' as const;\n\n/**\n * The service tier requested. May be a specific tier, detault, or auto.\n * \n * @example auto\n * @example default\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier' as const;\n\n/**\n * Enum value \"auto\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_AUTO = \"auto\" as const;\n\n/**\n * Enum value \"default\" for attribute {@link ATTR_GEN_AI_OPENAI_REQUEST_SERVICE_TIER}.\n */\nexport const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = \"default\" as const;\n\n/**\n * The service tier used for the response.\n * \n * @example scale\n * @example detault\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier' as const;\n\n/**\n * The name of the operation being performed.\n * \n * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const;\n\n/**\n * Enum value \"chat\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_CHAT = \"chat\" as const;\n\n/**\n * Enum value \"text_completion\" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.\n */\nexport const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = \"text_completion\" as const;\n\n/**\n * Deprecated, use Event API to report prompt contents.\n * \n * @example [{'role': 'user', 'content': 'What is the capital of France?'}]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt' as const;\n\n/**\n * The frequency penalty setting for the GenAI request.\n * \n * @example 0.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty' as const;\n\n/**\n * The maximum number of tokens the model generates for a request.\n * \n * @example 100\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens' as const;\n\n/**\n * The name of the GenAI model a request is being made to.\n * \n * @example \"gpt-4\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model' as const;\n\n/**\n * The presence penalty setting for the GenAI request.\n * \n * @example 0.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty' as const;\n\n/**\n * List of sequences that the model will use to stop generating further tokens.\n * \n * @example [\"forest\", \"lived\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences' as const;\n\n/**\n * The temperature setting for the GenAI request.\n * \n * @example 0.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature' as const;\n\n/**\n * The top_k sampling setting for the GenAI request.\n * \n * @example 1.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k' as const;\n\n/**\n * The top_p sampling setting for the GenAI request.\n * \n * @example 1.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p' as const;\n\n/**\n * Array of reasons the model stopped generating tokens, corresponding to each generation received.\n * \n * @example [\"stop\"]\n * @example [\"stop\", \"length\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons' as const;\n\n/**\n * The unique identifier for the completion.\n * \n * @example chatcmpl-123\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id' as const;\n\n/**\n * The name of the model that generated the response.\n * \n * @example gpt-4-0613\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model' as const;\n\n/**\n * The Generative AI product as identified by the client or server instrumentation.\n * \n * @example \"openai\"\n * \n * @note The `gen_ai.system` describes a family of GenAI models with specific model identified\n * by `gen_ai.request.model` and `gen_ai.response.model` attributes.\n * \n * The actual GenAI product may differ from the one identified by the client.\n * For example, when using OpenAI client libraries to communicate with Mistral, the `gen_ai.system`\n * is set to `openai` based on the instrumentation's best knowledge.\n * \n * For custom model, a custom friendly name **SHOULD** be used.\n * If none of these options apply, the `gen_ai.system` **SHOULD** be set to `_OTHER`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const;\n\n/**\n * Enum value \"anthropic\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n */\nexport const GEN_AI_SYSTEM_VALUE_ANTHROPIC = \"anthropic\" as const;\n\n/**\n * Enum value \"cohere\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n */\nexport const GEN_AI_SYSTEM_VALUE_COHERE = \"cohere\" as const;\n\n/**\n * Enum value \"openai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n */\nexport const GEN_AI_SYSTEM_VALUE_OPENAI = \"openai\" as const;\n\n/**\n * Enum value \"vertex_ai\" for attribute {@link ATTR_GEN_AI_SYSTEM}.\n */\nexport const GEN_AI_SYSTEM_VALUE_VERTEX_AI = \"vertex_ai\" as const;\n\n/**\n * The type of token being counted.\n * \n * @example input\n * @example output\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type' as const;\n\n/**\n * Enum value \"input\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_INPUT = \"input\" as const;\n\n/**\n * Enum value \"output\" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}.\n */\nexport const GEN_AI_TOKEN_TYPE_VALUE_COMPLETION = \"output\" as const;\n\n/**\n * Deprecated, use `gen_ai.usage.output_tokens` instead.\n * \n * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `gen_ai.usage.output_tokens` attribute.\n */\nexport const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI input (prompt).\n * \n * @example 100\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens' as const;\n\n/**\n * The number of tokens used in the GenAI response (completion).\n * \n * @example 180\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as const;\n\n/**\n * Deprecated, use `gen_ai.usage.input_tokens` instead.\n * \n * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `gen_ai.usage.input_tokens` attribute.\n */\nexport const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens' as const;\n\n/**\n * The type of memory.\n * \n * @example other\n * @example stack\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GO_MEMORY_TYPE = 'go.memory.type' as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n */\nexport const GO_MEMORY_TYPE_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"stack\" for attribute {@link ATTR_GO_MEMORY_TYPE}.\n */\nexport const GO_MEMORY_TYPE_VALUE_STACK = \"stack\" as const;\n\n/**\n * The GraphQL document being executed.\n * \n * @example \"query findBookById { bookById(id: ?) { name } }\"\n * \n * @note The value may be sanitized to exclude sensitive information.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_DOCUMENT = 'graphql.document' as const;\n\n/**\n * The name of the operation being executed.\n * \n * @example \"findBookById\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_NAME = 'graphql.operation.name' as const;\n\n/**\n * The type of the operation being executed.\n * \n * @example query\n * @example mutation\n * @example subscription\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_GRAPHQL_OPERATION_TYPE = 'graphql.operation.type' as const;\n\n/**\n * Enum value \"mutation\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_MUTATION = \"mutation\" as const;\n\n/**\n * Enum value \"query\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_QUERY = \"query\" as const;\n\n/**\n * Enum value \"subscription\" for attribute {@link ATTR_GRAPHQL_OPERATION_TYPE}.\n */\nexport const GRAPHQL_OPERATION_TYPE_VALUE_SUBSCRIPTION = \"subscription\" as const;\n\n/**\n * Unique identifier for the application\n * \n * @example 2daa2797-e42b-4624-9322-ec3f968df4da\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_APP_ID = 'heroku.app.id' as const;\n\n/**\n * Commit hash for the current release\n * \n * @example e6134959463efd8966b20e75b913cafe3f5ec\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_COMMIT = 'heroku.release.commit' as const;\n\n/**\n * Time and date the release was created\n * \n * @example 2022-10-23T18:00:42Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HEROKU_RELEASE_CREATION_TIMESTAMP = 'heroku.release.creation_timestamp' as const;\n\n/**\n * The CPU architecture the host system is running on.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Enum value \"amd64\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_AMD64 = \"amd64\" as const;\n\n/**\n * Enum value \"arm32\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_ARM32 = \"arm32\" as const;\n\n/**\n * Enum value \"arm64\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_ARM64 = \"arm64\" as const;\n\n/**\n * Enum value \"ia64\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_IA64 = \"ia64\" as const;\n\n/**\n * Enum value \"ppc32\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_PPC32 = \"ppc32\" as const;\n\n/**\n * Enum value \"ppc64\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_PPC64 = \"ppc64\" as const;\n\n/**\n * Enum value \"s390x\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_S390X = \"s390x\" as const;\n\n/**\n * Enum value \"x86\" for attribute {@link ATTR_HOST_ARCH}.\n */\nexport const HOST_ARCH_VALUE_X86 = \"x86\" as const;\n\n/**\n * The amount of level 2 memory cache available to the processor (in Bytes).\n * \n * @example 12288000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_CACHE_L2_SIZE = 'host.cpu.cache.l2.size' as const;\n\n/**\n * Family or generation of the CPU.\n * \n * @example 6\n * @example PA-RISC 1.1e\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_FAMILY = 'host.cpu.family' as const;\n\n/**\n * Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.\n * \n * @example 6\n * @example 9000/778/B180L\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_ID = 'host.cpu.model.id' as const;\n\n/**\n * Model designation of the processor.\n * \n * @example 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_MODEL_NAME = 'host.cpu.model.name' as const;\n\n/**\n * Stepping or core revisions.\n * \n * @example 1\n * @example r1p1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_STEPPING = 'host.cpu.stepping' as const;\n\n/**\n * Processor manufacturer identifier. A maximum 12-character string.\n * \n * @example GenuineIntel\n * \n * @note [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_CPU_VENDOR_ID = 'host.cpu.vendor.id' as const;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n * \n * @example fdbf79e8af94cb7f9e8df36789187052\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n * \n * @example ami-07b06b442921831e5\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n * \n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n * \n * @example 0.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Available IP addresses of the host, excluding loopback interfaces.\n * \n * @example [\"192.168.1.140\", \"fe80::abc2:4a28:737a:609e\"]\n * \n * @note IPv4 Addresses **MUST** be specified in dotted-quad notation. IPv6 addresses **MUST** be specified in the [RFC 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IP = 'host.ip' as const;\n\n/**\n * Available MAC addresses of the host, excluding loopback interfaces.\n * \n * @example [\"AC-DE-48-23-45-67\", \"AC-DE-48-23-45-67-01-9F\"]\n * \n * @note MAC Addresses **MUST** be represented in [IEEE RA hexadecimal form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf): as hyphen-separated octets in uppercase hexadecimal form from most to least significant.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_MAC = 'host.mac' as const;\n\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 * @example opentelemetry-test\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n * \n * @example n1-standard-1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\n/**\n * Deprecated, use `client.address` instead.\n * \n * @example \"83.164.160.102\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `client.address`.\n */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * State of the HTTP connection in the HTTP connection pool.\n * \n * @example active\n * @example idle\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_CONNECTION_STATE = 'http.connection.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_HTTP_CONNECTION_STATE}.\n */\nexport const HTTP_CONNECTION_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Deprecated, use `network.protocol.name` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.protocol.name`.\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Enum value \"1.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_0 = \"1.0\" as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = \"1.1\" as const;\n\n/**\n * Enum value \"2.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_2_0 = \"2.0\" as const;\n\n/**\n * Enum value \"3.0\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_3_0 = \"3.0\" as const;\n\n/**\n * Enum value \"QUIC\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_QUIC = \"QUIC\" as const;\n\n/**\n * Enum value \"SPDY\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_SPDY = \"SPDY\" as const;\n\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n * \n * @example www.example.org\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\n\n/**\n * Deprecated, use `http.request.method` instead.\n * \n * @example GET\n * @example POST\n * @example HEAD\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n * \n * @example 3495\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_REQUEST_BODY_SIZE = 'http.request.body.size' as const;\n\n/**\n * The total size of the request in bytes. This should be the total number of bytes sent over the wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request body if any.\n * \n * @example 1437\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_REQUEST_SIZE = 'http.request.size' as const;\n\n/**\n * Deprecated, use `http.request.header.` instead.\n * \n * @example 3495\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `http.request.header.`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length' as const;\n\n/**\n * Deprecated, use `http.request.body.size` instead.\n * \n * @example 5493\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `http.request.body.size`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed' as const;\n\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://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size.\n * \n * @example 3495\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size' as const;\n\n/**\n * The total size of the response in bytes. This should be the total number of bytes sent over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and response body and trailers if any.\n * \n * @example 1437\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HTTP_RESPONSE_SIZE = 'http.response.size' as const;\n\n/**\n * Deprecated, use `http.response.header.` instead.\n * \n * @example 3495\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `http.response.header.`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length' as const;\n\n/**\n * Deprecated, use `http.response.body.size` instead.\n * \n * @example 5493\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replace by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `url.scheme` instead.\n * \n * @example http\n * @example https\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `url.scheme` instead.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n * \n * @example example.com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\n/**\n * Deprecated, use `http.response.status_code` instead.\n * \n * @example 200\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `http.response.status_code`.\n */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n * \n * @example /search?q=OpenTelemetry#SemConv\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Split to `url.path` and `url.query.\n */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\n/**\n * Deprecated, use `url.full` instead.\n * \n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `url.full`.\n */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\n/**\n * Deprecated, use `user_agent.original` instead.\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 * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `user_agent.original`.\n */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * An identifier for the hardware component, unique within the monitored host\n * \n * @example win32battery_battery_testsysa33_1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_ID = 'hw.id' as const;\n\n/**\n * An easily-recognizable name for the hardware component\n * \n * @example eth0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_NAME = 'hw.name' as const;\n\n/**\n * Unique identifier of the parent component (typically the `hw.id` attribute of the enclosure, or disk controller)\n * \n * @example dellStorage_perc_0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_PARENT = 'hw.parent' as const;\n\n/**\n * The current state of the component\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_STATE = 'hw.state' as const;\n\n/**\n * Enum value \"degraded\" for attribute {@link ATTR_HW_STATE}.\n */\nexport const HW_STATE_VALUE_DEGRADED = \"degraded\" as const;\n\n/**\n * Enum value \"failed\" for attribute {@link ATTR_HW_STATE}.\n */\nexport const HW_STATE_VALUE_FAILED = \"failed\" as const;\n\n/**\n * Enum value \"ok\" for attribute {@link ATTR_HW_STATE}.\n */\nexport const HW_STATE_VALUE_OK = \"ok\" as const;\n\n/**\n * Type of the component\n * \n * @note Describes the category of the hardware component for which `hw.state` is being reported. For example, `hw.type=temperature` along with `hw.state=degraded` would indicate that the temperature of the hardware component has been reported as `degraded`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HW_TYPE = 'hw.type' as const;\n\n/**\n * Enum value \"battery\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_BATTERY = \"battery\" as const;\n\n/**\n * Enum value \"cpu\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_CPU = \"cpu\" as const;\n\n/**\n * Enum value \"disk_controller\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_DISK_CONTROLLER = \"disk_controller\" as const;\n\n/**\n * Enum value \"enclosure\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_ENCLOSURE = \"enclosure\" as const;\n\n/**\n * Enum value \"fan\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_FAN = \"fan\" as const;\n\n/**\n * Enum value \"gpu\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_GPU = \"gpu\" as const;\n\n/**\n * Enum value \"logical_disk\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_LOGICAL_DISK = \"logical_disk\" as const;\n\n/**\n * Enum value \"memory\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_MEMORY = \"memory\" as const;\n\n/**\n * Enum value \"network\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_NETWORK = \"network\" as const;\n\n/**\n * Enum value \"physical_disk\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_PHYSICAL_DISK = \"physical_disk\" as const;\n\n/**\n * Enum value \"power_supply\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_POWER_SUPPLY = \"power_supply\" as const;\n\n/**\n * Enum value \"tape_drive\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_TAPE_DRIVE = \"tape_drive\" as const;\n\n/**\n * Enum value \"temperature\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_TEMPERATURE = \"temperature\" as const;\n\n/**\n * Enum value \"voltage\" for attribute {@link ATTR_HW_TYPE}.\n */\nexport const HW_TYPE_VALUE_VOLTAGE = \"voltage\" as const;\n\n/**\n * Deprecated use the `device.app.lifecycle` event definition including `ios.state` as a payload field instead.\n * \n * @note The iOS lifecycle states are defined in the [UIApplicationDelegate documentation](https://developer.apple.com/documentation/uikit/uiapplicationdelegate#1656902), and from which the `OS terminology` column values are derived.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Moved to a payload field of `device.app.lifecycle`.\n */\nexport const ATTR_IOS_STATE = 'ios.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_IOS_STATE}.\n */\nexport const IOS_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"background\" for attribute {@link ATTR_IOS_STATE}.\n */\nexport const IOS_STATE_VALUE_BACKGROUND = \"background\" as const;\n\n/**\n * Enum value \"foreground\" for attribute {@link ATTR_IOS_STATE}.\n */\nexport const IOS_STATE_VALUE_FOREGROUND = \"foreground\" as const;\n\n/**\n * Enum value \"inactive\" for attribute {@link ATTR_IOS_STATE}.\n */\nexport const IOS_STATE_VALUE_INACTIVE = \"inactive\" as const;\n\n/**\n * Enum value \"terminate\" for attribute {@link ATTR_IOS_STATE}.\n */\nexport const IOS_STATE_VALUE_TERMINATE = \"terminate\" as const;\n\n/**\n * Name of the buffer pool.\n * \n * @example mapped\n * @example direct\n * \n * @note Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_JVM_BUFFER_POOL_NAME = 'jvm.buffer.pool.name' as const;\n\n/**\n * The name of the cluster.\n * \n * @example opentelemetry-cluster\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace.\n * \n * @example 218fc5a9-a5f1-4b54-aa05-46717d0ab26d\n * \n * @note K8s doesn't have support for obtaining a cluster ID. If this is ever\n * added, we will recommend collecting the `k8s.cluster.uid` through the\n * official APIs. In the meantime, we are able to use the `uid` of the\n * `kube-system` namespace as a proxy for cluster ID. Read on for the\n * rationale.\n * \n * Every object created in a K8s cluster is assigned a distinct UID. The\n * `kube-system` namespace is used by Kubernetes itself and will exist\n * for the lifetime of the cluster. Using the `uid` of the `kube-system`\n * namespace is a reasonable proxy for the K8s ClusterID as it will only\n * change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are\n * UUIDs as standardized by\n * [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html).\n * Which states:\n * \n * > If generated according to one of the mechanisms defined in Rec.\n * > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be\n * > different from all other UUIDs generated before 3603 A.D., or is\n * > extremely likely to be different (depending on the mechanism chosen).\n * \n * Therefore, UIDs between clusters should be extremely unlikely to\n * conflict.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_UID = 'k8s.cluster.uid' as const;\n\n/**\n * The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`).\n * \n * @example redis\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_NAME = 'k8s.container.name' as const;\n\n/**\n * Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count' as const;\n\n/**\n * Last terminated reason of the Container.\n * \n * @example Evicted\n * @example Error\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CONTAINER_STATUS_LAST_TERMINATED_REASON = 'k8s.container.status.last_terminated_reason' as const;\n\n/**\n * The name of the CronJob.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_NAME = 'k8s.cronjob.name' as const;\n\n/**\n * The UID of the CronJob.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CRONJOB_UID = 'k8s.cronjob.uid' as const;\n\n/**\n * The name of the DaemonSet.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_NAME = 'k8s.daemonset.name' as const;\n\n/**\n * The UID of the DaemonSet.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DAEMONSET_UID = 'k8s.daemonset.uid' as const;\n\n/**\n * The name of the Deployment.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The UID of the Deployment.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid' as const;\n\n/**\n * The name of the Job.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_NAME = 'k8s.job.name' as const;\n\n/**\n * The UID of the Job.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_JOB_UID = 'k8s.job.uid' as const;\n\n/**\n * The name of the namespace that the pod is running in.\n * \n * @example default\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The name of the Node.\n * \n * @example node-1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_NAME = 'k8s.node.name' as const;\n\n/**\n * The UID of the Node.\n * \n * @example 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NODE_UID = 'k8s.node.uid' as const;\n\n/**\n * The annotation key-value pairs placed on the Pod, the `` being the annotation name, the value being the annotation value.\n * \n * @example k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets=true\n * @example k8s.pod.annotation.mycompany.io/arch=x64\n * @example k8s.pod.annotation.data=\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_ANNOTATION = (key: string) => `k8s.pod.annotation.${key}`;\n\n/**\n * The label key-value pairs placed on the Pod, the `` being the label name, the value being the label value.\n * \n * @example k8s.pod.label.app=my-app\n * @example k8s.pod.label.mycompany.io/arch=x64\n * @example k8s.pod.label.data=\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_LABEL = (key: string) => `k8s.pod.label.${key}`;\n\n/**\n * Deprecated, use `k8s.pod.label` instead.\n * \n * @example k8s.pod.label.app=my-app\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `k8s.pod.label`.\n */\nexport const ATTR_K8S_POD_LABELS = (key: string) => `k8s.pod.labels.${key}`;\n\n/**\n * The name of the Pod.\n * \n * @example opentelemetry-pod-autoconf\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The UID of the Pod.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_UID = 'k8s.pod.uid' as const;\n\n/**\n * The name of the ReplicaSet.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_NAME = 'k8s.replicaset.name' as const;\n\n/**\n * The UID of the ReplicaSet.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_REPLICASET_UID = 'k8s.replicaset.uid' as const;\n\n/**\n * The name of the StatefulSet.\n * \n * @example opentelemetry\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_NAME = 'k8s.statefulset.name' as const;\n\n/**\n * The UID of the StatefulSet.\n * \n * @example 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_STATEFULSET_UID = 'k8s.statefulset.uid' as const;\n\n/**\n * The name of the K8s volume.\n * \n * @example volume0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_NAME = 'k8s.volume.name' as const;\n\n/**\n * The type of the K8s volume.\n * \n * @example emptyDir\n * @example persistentVolumeClaim\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_VOLUME_TYPE = 'k8s.volume.type' as const;\n\n/**\n * Enum value \"configMap\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_CONFIG_MAP = \"configMap\" as const;\n\n/**\n * Enum value \"downwardAPI\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_DOWNWARD_API = \"downwardAPI\" as const;\n\n/**\n * Enum value \"emptyDir\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_EMPTY_DIR = \"emptyDir\" as const;\n\n/**\n * Enum value \"local\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_LOCAL = \"local\" as const;\n\n/**\n * Enum value \"persistentVolumeClaim\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_PERSISTENT_VOLUME_CLAIM = \"persistentVolumeClaim\" as const;\n\n/**\n * Enum value \"secret\" for attribute {@link ATTR_K8S_VOLUME_TYPE}.\n */\nexport const K8S_VOLUME_TYPE_VALUE_SECRET = \"secret\" as const;\n\n/**\n * The Linux Slab memory state\n * \n * @example reclaimable\n * @example unreclaimable\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state' as const;\n\n/**\n * Enum value \"reclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_RECLAIMABLE = \"reclaimable\" as const;\n\n/**\n * Enum value \"unreclaimable\" for attribute {@link ATTR_LINUX_MEMORY_SLAB_STATE}.\n */\nexport const LINUX_MEMORY_SLAB_STATE_VALUE_UNRECLAIMABLE = \"unreclaimable\" as const;\n\n/**\n * The basename of the file.\n * \n * @example audit.log\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME = 'log.file.name' as const;\n\n/**\n * The basename of the file, with symlinks resolved.\n * \n * @example uuid.log\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_NAME_RESOLVED = 'log.file.name_resolved' as const;\n\n/**\n * The full path to the file.\n * \n * @example /var/log/mysql/audit.log\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH = 'log.file.path' as const;\n\n/**\n * The full path to the file, with symlinks resolved.\n * \n * @example /var/lib/docker/uuid.log\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_FILE_PATH_RESOLVED = 'log.file.path_resolved' as const;\n\n/**\n * The stream associated with the log. See below for a list of well-known values.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_IOSTREAM = 'log.iostream' as const;\n\n/**\n * Enum value \"stderr\" for attribute {@link ATTR_LOG_IOSTREAM}.\n */\nexport const LOG_IOSTREAM_VALUE_STDERR = \"stderr\" as const;\n\n/**\n * Enum value \"stdout\" for attribute {@link ATTR_LOG_IOSTREAM}.\n */\nexport const LOG_IOSTREAM_VALUE_STDOUT = \"stdout\" as const;\n\n/**\n * The complete original Log Record.\n * \n * @example 77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - Something happened\n * @example [INFO] 8/3/24 12:34:56 Something happened\n * \n * @note This value **MAY** be added when processing a Log Record which was originally transmitted as a string or equivalent data type AND the Body field of the Log Record does not contain the same value. (e.g. a syslog or a log record read from a file.)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_ORIGINAL = 'log.record.original' as const;\n\n/**\n * A unique identifier for the Log Record.\n * \n * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV\n * \n * @note If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records **MUST** have different values.\n * The id **MAY** be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), but other identifiers (e.g. UUID) may be used as needed.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_LOG_RECORD_UID = 'log.record.uid' as const;\n\n/**\n * Deprecated, use `rpc.message.compressed_size` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `rpc.message.compressed_size`.\n */\nexport const ATTR_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size' as const;\n\n/**\n * Deprecated, use `rpc.message.id` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `rpc.message.id`.\n */\nexport const ATTR_MESSAGE_ID = 'message.id' as const;\n\n/**\n * Deprecated, use `rpc.message.type` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `rpc.message.type`.\n */\nexport const ATTR_MESSAGE_TYPE = 'message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_MESSAGE_TYPE}.\n */\nexport const MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_MESSAGE_TYPE}.\n */\nexport const MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Deprecated, use `rpc.message.uncompressed_size` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `rpc.message.uncompressed_size`.\n */\nexport const ATTR_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size' as const;\n\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n * \n * @example 0\n * @example 1\n * @example 2\n * \n * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count' as const;\n\n/**\n * A unique identifier for the client that consumes or produces a message.\n * \n * @example client-5\n * @example myhost@8742@s8083jm\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CLIENT_ID = 'messaging.client.id' as const;\n\n/**\n * The name of the consumer group with which a consumer is associated.\n * \n * @example my-group\n * @example indexer\n * \n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.consumer.group.name` is applicable and what it means in the context of that system.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name' as const;\n\n/**\n * A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_ANONYMOUS = 'messaging.destination.anonymous' as const;\n\n/**\n * The message destination name\n * \n * @example MyQueue\n * @example MyTopic\n * \n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name' as const;\n\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n * \n * @example \"1\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id' as const;\n\n/**\n * The name of the destination subscription from which a message is consumed.\n * \n * @example subscription-a\n * \n * @note Semantic conventions for individual messaging systems **SHOULD** document whether `messaging.destination.subscription.name` is applicable and what it means in the context of that system.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = 'messaging.destination.subscription.name' as const;\n\n/**\n * Low cardinality representation of the messaging destination name\n * \n * @example /customers/{customerId}\n * \n * @note Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPLATE = 'messaging.destination.template' as const;\n\n/**\n * A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_TEMPORARY = 'messaging.destination.temporary' as const;\n\n/**\n * Deprecated, no replacement at this time.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated No replacement at this time.\n */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_ANONYMOUS = 'messaging.destination_publish.anonymous' as const;\n\n/**\n * Deprecated, no replacement at this time.\n * \n * @example MyQueue\n * @example MyTopic\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated No replacement at this time.\n */\nexport const ATTR_MESSAGING_DESTINATION_PUBLISH_NAME = 'messaging.destination_publish.name' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n * \n * @example \"$Default\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_CONSUMER_GROUP = 'messaging.eventhubs.consumer.group' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n * \n * @example 1701393730\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_EVENTHUBS_MESSAGE_ENQUEUED_TIME = 'messaging.eventhubs.message.enqueued_time' as const;\n\n/**\n * The ack deadline in seconds set for the modify ack deadline request.\n * \n * @example 10\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_DEADLINE = 'messaging.gcp_pubsub.message.ack_deadline' as const;\n\n/**\n * The ack id for a given message.\n * \n * @example \"ack_id\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ACK_ID = 'messaging.gcp_pubsub.message.ack_id' as const;\n\n/**\n * The delivery attempt for a given message.\n * \n * @example 2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_DELIVERY_ATTEMPT = 'messaging.gcp_pubsub.message.delivery_attempt' as const;\n\n/**\n * The ordering key for a given message. If the attribute is not present, the message does not have an ordering key.\n * \n * @example \"ordering_key\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_GCP_PUBSUB_MESSAGE_ORDERING_KEY = 'messaging.gcp_pubsub.message.ordering_key' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n * \n * @example \"my-group\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.consumer.group.name`.\n */\nexport const ATTR_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer.group' as const;\n\n/**\n * Deprecated, use `messaging.destination.partition.id` instead.\n * \n * @example 2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.destination.partition.id`.\n */\nexport const ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION = 'messaging.kafka.destination.partition' as const;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n * \n * @example \"myKey\"\n * \n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key' as const;\n\n/**\n * Deprecated, use `messaging.kafka.offset` instead.\n * \n * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.kafka.offset`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_OFFSET = 'messaging.kafka.message.offset' as const;\n\n/**\n * A boolean that is true if the message is a tombstone.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone' as const;\n\n/**\n * The offset of a record in the corresponding Kafka partition.\n * \n * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The size of the message body in bytes.\n * \n * @example 1439\n * \n * @note This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed\n * body size should be used.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size' as const;\n\n/**\n * The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".\n * \n * @example \"MyConversationId\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_CONVERSATION_ID = 'messaging.message.conversation_id' as const;\n\n/**\n * The size of the message body and metadata in bytes.\n * \n * @example 2738\n * \n * @note This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed\n * size should be used.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n * \n * @example \"452a7c7c7c7048c2f887f61572b18fc2\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id' as const;\n\n/**\n * Deprecated, use `messaging.operation.type` instead.\n * \n * @example publish\n * @example create\n * @example process\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.operation.type`.\n */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\n/**\n * The system-specific name of the messaging operation.\n * \n * @example ack\n * @example nack\n * @example send\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name' as const;\n\n/**\n * A string identifying the type of the messaging operation.\n * \n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type' as const;\n\n/**\n * Enum value \"create\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_CREATE = \"create\" as const;\n\n/**\n * Enum value \"deliver\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_DELIVER = \"deliver\" as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = \"process\" as const;\n\n/**\n * Enum value \"publish\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PUBLISH = \"publish\" as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = \"send\" as const;\n\n/**\n * Enum value \"settle\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SETTLE = \"settle\" as const;\n\n/**\n * RabbitMQ message routing key.\n * \n * @example \"myKey\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = 'messaging.rabbitmq.destination.routing_key' as const;\n\n/**\n * RabbitMQ message delivery tag\n * \n * @example 123\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_RABBITMQ_MESSAGE_DELIVERY_TAG = 'messaging.rabbitmq.message.delivery_tag' as const;\n\n/**\n * Deprecated, use `messaging.consumer.group.name` instead.\n * \n * @example \"myConsumerGroup\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.consumer.group.name` on the consumer spans. No replacement for producer spans.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CLIENT_GROUP = 'messaging.rocketmq.client_group' as const;\n\n/**\n * Model of message consumption. This only applies to consumer spans.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL = 'messaging.rocketmq.consumption_model' as const;\n\n/**\n * Enum value \"broadcasting\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_BROADCASTING = \"broadcasting\" as const;\n\n/**\n * Enum value \"clustering\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_CONSUMPTION_MODEL}.\n */\nexport const MESSAGING_ROCKETMQ_CONSUMPTION_MODEL_VALUE_CLUSTERING = \"clustering\" as const;\n\n/**\n * The delay time level for delay message, which determines the message delay time.\n * \n * @example 3\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELAY_TIME_LEVEL = 'messaging.rocketmq.message.delay_time_level' as const;\n\n/**\n * The timestamp in milliseconds that the delay message is expected to be delivered to consumer.\n * \n * @example 1665987217045\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_DELIVERY_TIMESTAMP = 'messaging.rocketmq.message.delivery_timestamp' as const;\n\n/**\n * It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group.\n * \n * @example \"myMessageGroup\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_GROUP = 'messaging.rocketmq.message.group' as const;\n\n/**\n * Key(s) of message, another way to mark message besides message id.\n * \n * @example [\"keyA\", \"keyB\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_KEYS = 'messaging.rocketmq.message.keys' as const;\n\n/**\n * The secondary classifier of message besides topic.\n * \n * @example \"tagA\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TAG = 'messaging.rocketmq.message.tag' as const;\n\n/**\n * Type of message.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE = 'messaging.rocketmq.message.type' as const;\n\n/**\n * Enum value \"delay\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_DELAY = \"delay\" as const;\n\n/**\n * Enum value \"fifo\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_FIFO = \"fifo\" as const;\n\n/**\n * Enum value \"normal\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_NORMAL = \"normal\" as const;\n\n/**\n * Enum value \"transaction\" for attribute {@link ATTR_MESSAGING_ROCKETMQ_MESSAGE_TYPE}.\n */\nexport const MESSAGING_ROCKETMQ_MESSAGE_TYPE_VALUE_TRANSACTION = \"transaction\" as const;\n\n/**\n * Namespace of RocketMQ resources, resources in different namespaces are individual.\n * \n * @example \"myNamespace\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_ROCKETMQ_NAMESPACE = 'messaging.rocketmq.namespace' as const;\n\n/**\n * Deprecated, use `messaging.destination.subscription.name` instead.\n * \n * @example \"subscription-a\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `messaging.destination.subscription.name`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DESTINATION_SUBSCRIPTION_NAME = 'messaging.servicebus.destination.subscription_name' as const;\n\n/**\n * Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS = 'messaging.servicebus.disposition_status' as const;\n\n/**\n * Enum value \"abandon\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_ABANDON = \"abandon\" as const;\n\n/**\n * Enum value \"complete\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_COMPLETE = \"complete\" as const;\n\n/**\n * Enum value \"dead_letter\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEAD_LETTER = \"dead_letter\" as const;\n\n/**\n * Enum value \"defer\" for attribute {@link ATTR_MESSAGING_SERVICEBUS_DISPOSITION_STATUS}.\n */\nexport const MESSAGING_SERVICEBUS_DISPOSITION_STATUS_VALUE_DEFER = \"defer\" as const;\n\n/**\n * Number of deliveries that have been attempted for this message.\n * \n * @example 2\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_DELIVERY_COUNT = 'messaging.servicebus.message.delivery_count' as const;\n\n/**\n * The UTC epoch seconds at which the message has been accepted and stored in the entity.\n * \n * @example 1701393730\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SERVICEBUS_MESSAGE_ENQUEUED_TIME = 'messaging.servicebus.message.enqueued_time' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n * \n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"activemq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_ACTIVEMQ = \"activemq\" as const;\n\n/**\n * Enum value \"aws_sqs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_AWS_SQS = \"aws_sqs\" as const;\n\n/**\n * Enum value \"eventgrid\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTGRID = \"eventgrid\" as const;\n\n/**\n * Enum value \"eventhubs\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_EVENTHUBS = \"eventhubs\" as const;\n\n/**\n * Enum value \"gcp_pubsub\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_GCP_PUBSUB = \"gcp_pubsub\" as const;\n\n/**\n * Enum value \"jms\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_JMS = \"jms\" as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = \"kafka\" as const;\n\n/**\n * Enum value \"pulsar\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_PULSAR = \"pulsar\" as const;\n\n/**\n * Enum value \"rabbitmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_RABBITMQ = \"rabbitmq\" as const;\n\n/**\n * Enum value \"rocketmq\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_ROCKETMQ = \"rocketmq\" as const;\n\n/**\n * Enum value \"servicebus\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_SERVICEBUS = \"servicebus\" as const;\n\n/**\n * Deprecated, use `network.local.address`.\n * \n * @example \"192.168.0.1\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.local.address`.\n */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\n/**\n * Deprecated, use `server.address`.\n * \n * @example example.com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\n/**\n * Deprecated, use `server.port`.\n * \n * @example 8080\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.port`.\n */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.address`.\n * \n * @example \"127.0.0.1\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.peer.address`.\n */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n * \n * @example example.com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n * \n * @example 8080\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.protocol.name`.\n * \n * @example amqp\n * @example http\n * @example mqtt\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.protocol.name`.\n */\nexport const ATTR_NET_PROTOCOL_NAME = 'net.protocol.name' as const;\n\n/**\n * Deprecated, use `network.protocol.version`.\n * \n * @example \"3.1.1\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.protocol.version`.\n */\nexport const ATTR_NET_PROTOCOL_VERSION = 'net.protocol.version' as const;\n\n/**\n * Deprecated, use `network.transport` and `network.type`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Split to `network.transport` and `network.type`.\n */\nexport const ATTR_NET_SOCK_FAMILY = 'net.sock.family' as const;\n\n/**\n * Enum value \"inet\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET = \"inet\" as const;\n\n/**\n * Enum value \"inet6\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n */\nexport const NET_SOCK_FAMILY_VALUE_INET6 = \"inet6\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NET_SOCK_FAMILY}.\n */\nexport const NET_SOCK_FAMILY_VALUE_UNIX = \"unix\" as const;\n\n/**\n * Deprecated, use `network.local.address`.\n * \n * @example /var/my.sock\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.local.address`.\n */\nexport const ATTR_NET_SOCK_HOST_ADDR = 'net.sock.host.addr' as const;\n\n/**\n * Deprecated, use `network.local.port`.\n * \n * @example 8080\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.local.port`.\n */\nexport const ATTR_NET_SOCK_HOST_PORT = 'net.sock.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.address`.\n * \n * @example 192.168.0.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.peer.address`.\n */\nexport const ATTR_NET_SOCK_PEER_ADDR = 'net.sock.peer.addr' as const;\n\n/**\n * Deprecated, no replacement at this time.\n * \n * @example /var/my.sock\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Removed.\n */\nexport const ATTR_NET_SOCK_PEER_NAME = 'net.sock.peer.name' as const;\n\n/**\n * Deprecated, use `network.peer.port`.\n * \n * @example 65531\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.peer.port`.\n */\nexport const ATTR_NET_SOCK_PEER_PORT = 'net.sock.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"inproc\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_INPROC = \"inproc\" as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = \"ip_tcp\" as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = \"ip_udp\" as const;\n\n/**\n * Enum value \"other\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_OTHER = \"other\" as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n * \n * @example \"DE\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_ICC = 'network.carrier.icc' as const;\n\n/**\n * The mobile carrier country code.\n * \n * @example \"310\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MCC = 'network.carrier.mcc' as const;\n\n/**\n * The mobile carrier network code.\n * \n * @example \"001\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_MNC = 'network.carrier.mnc' as const;\n\n/**\n * The name of the mobile carrier.\n * \n * @example \"sprint\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CARRIER_NAME = 'network.carrier.name' as const;\n\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 * @example \"LTE\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_SUBTYPE = 'network.connection.subtype' as const;\n\n/**\n * Enum value \"cdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA = \"cdma\" as const;\n\n/**\n * Enum value \"cdma2000_1xrtt\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT = \"cdma2000_1xrtt\" as const;\n\n/**\n * Enum value \"edge\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE = \"edge\" as const;\n\n/**\n * Enum value \"ehrpd\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD = \"ehrpd\" as const;\n\n/**\n * Enum value \"evdo_0\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 = \"evdo_0\" as const;\n\n/**\n * Enum value \"evdo_a\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A = \"evdo_a\" as const;\n\n/**\n * Enum value \"evdo_b\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B = \"evdo_b\" as const;\n\n/**\n * Enum value \"gprs\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS = \"gprs\" as const;\n\n/**\n * Enum value \"gsm\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_GSM = \"gsm\" as const;\n\n/**\n * Enum value \"hsdpa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA = \"hsdpa\" as const;\n\n/**\n * Enum value \"hspa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA = \"hspa\" as const;\n\n/**\n * Enum value \"hspap\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP = \"hspap\" as const;\n\n/**\n * Enum value \"hsupa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA = \"hsupa\" as const;\n\n/**\n * Enum value \"iden\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN = \"iden\" as const;\n\n/**\n * Enum value \"iwlan\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN = \"iwlan\" as const;\n\n/**\n * Enum value \"lte\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE = \"lte\" as const;\n\n/**\n * Enum value \"lte_ca\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA = \"lte_ca\" as const;\n\n/**\n * Enum value \"nr\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NR = \"nr\" as const;\n\n/**\n * Enum value \"nrnsa\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA = \"nrnsa\" as const;\n\n/**\n * Enum value \"td_scdma\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA = \"td_scdma\" as const;\n\n/**\n * Enum value \"umts\" for attribute {@link ATTR_NETWORK_CONNECTION_SUBTYPE}.\n */\nexport const NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS = \"umts\" as const;\n\n/**\n * The internet connection type.\n * \n * @example \"wifi\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_CONNECTION_TYPE = 'network.connection.type' as const;\n\n/**\n * Enum value \"cell\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_CELL = \"cell\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Enum value \"wifi\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIFI = \"wifi\" as const;\n\n/**\n * Enum value \"wired\" for attribute {@link ATTR_NETWORK_CONNECTION_TYPE}.\n */\nexport const NETWORK_CONNECTION_TYPE_VALUE_WIRED = \"wired\" as const;\n\n/**\n * The network IO operation direction.\n * \n * @example transmit\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NETWORK_IO_DIRECTION = 'network.io.direction' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_RECEIVE = \"receive\" as const;\n\n/**\n * Enum value \"transmit\" for attribute {@link ATTR_NETWORK_IO_DIRECTION}.\n */\nexport const NETWORK_IO_DIRECTION_VALUE_TRANSMIT = \"transmit\" as const;\n\n/**\n * The state of event loop time.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_NODEJS_EVENTLOOP_STATE = 'nodejs.eventloop.state' as const;\n\n/**\n * Enum value \"active\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_ACTIVE = \"active\" as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_NODEJS_EVENTLOOP_STATE}.\n */\nexport const NODEJS_EVENTLOOP_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.\n * \n * @example sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4\n * \n * @note Follows [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md), and specifically the [Digest property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).\n * An example can be found in [Example Image Manifest](https://docs.docker.com/registry/spec/manifest-v2-2/#example-image-manifest).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OCI_MANIFEST_DIGEST = 'oci.manifest.digest' as const;\n\n/**\n * Parent-child Reference type\n * \n * @note The causal relationship between a child Span and a parent Span.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OPENTRACING_REF_TYPE = 'opentracing.ref_type' as const;\n\n/**\n * Enum value \"child_of\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_CHILD_OF = \"child_of\" as const;\n\n/**\n * Enum value \"follows_from\" for attribute {@link ATTR_OPENTRACING_REF_TYPE}.\n */\nexport const OPENTRACING_REF_TYPE_VALUE_FOLLOWS_FROM = \"follows_from\" as const;\n\n/**\n * Unique identifier for a particular build or compilation of the operating system.\n * \n * @example TQ3C.230805.001.B2\n * @example 20E247\n * @example 22621\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_BUILD_ID = 'os.build_id' as const;\n\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 * @example Microsoft Windows [Version 10.0.18363.778]\n * @example Ubuntu 18.04.1 LTS\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_DESCRIPTION = 'os.description' as const;\n\n/**\n * Human readable operating system name.\n * \n * @example iOS\n * @example Android\n * @example Ubuntu\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_NAME = 'os.name' as const;\n\n/**\n * The operating system type.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * Enum value \"aix\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_AIX = \"aix\" as const;\n\n/**\n * Enum value \"darwin\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_DARWIN = \"darwin\" as const;\n\n/**\n * Enum value \"dragonflybsd\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_DRAGONFLYBSD = \"dragonflybsd\" as const;\n\n/**\n * Enum value \"freebsd\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_FREEBSD = \"freebsd\" as const;\n\n/**\n * Enum value \"hpux\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_HPUX = \"hpux\" as const;\n\n/**\n * Enum value \"linux\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_LINUX = \"linux\" as const;\n\n/**\n * Enum value \"netbsd\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_NETBSD = \"netbsd\" as const;\n\n/**\n * Enum value \"openbsd\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_OPENBSD = \"openbsd\" as const;\n\n/**\n * Enum value \"solaris\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_SOLARIS = \"solaris\" as const;\n\n/**\n * Enum value \"windows\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_WINDOWS = \"windows\" as const;\n\n/**\n * Enum value \"z_os\" for attribute {@link ATTR_OS_TYPE}.\n */\nexport const OS_TYPE_VALUE_Z_OS = \"z_os\" as const;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n * \n * @example 14.2.1\n * @example 18.04.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * Deprecated. Use the `otel.scope.name` attribute\n * \n * @example io.opentelemetry.contrib.mongodb\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Use the `otel.scope.name` attribute.\n */\nexport const ATTR_OTEL_LIBRARY_NAME = 'otel.library.name' as const;\n\n/**\n * Deprecated. Use the `otel.scope.version` attribute.\n * \n * @example 1.0.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Use the `otel.scope.version` attribute.\n */\nexport const ATTR_OTEL_LIBRARY_VERSION = 'otel.library.version' as const;\n\n/**\n * The [`service.name`](/docs/resource/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 * @example \"AuthTokenCache\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PEER_SERVICE = 'peer.service' as const;\n\n/**\n * Deprecated, use `db.client.connection.pool.name` instead.\n * \n * @example myDataSource\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.client.connection.pool.name`.\n */\nexport const ATTR_POOL_NAME = 'pool.name' as const;\n\n/**\n * Length of the process.command_args array\n * \n * @example 4\n * \n * @note This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_ARGS_COUNT = 'process.args_count' as const;\n\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 * @example cmd/otelcol\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\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 * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\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 * @example C:\\\\cmd\\\\otecol --config=\"my directory\\\\config.yaml\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_LINE = 'process.command_line' as const;\n\n/**\n * Specifies whether the context switches for this data point were voluntary or involuntary.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CONTEXT_SWITCH_TYPE = 'process.context_switch_type' as const;\n\n/**\n * Enum value \"involuntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_INVOLUNTARY = \"involuntary\" as const;\n\n/**\n * Enum value \"voluntary\" for attribute {@link ATTR_PROCESS_CONTEXT_SWITCH_TYPE}.\n */\nexport const PROCESS_CONTEXT_SWITCH_TYPE_VALUE_VOLUNTARY = \"voluntary\" as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `cpu.mode`\n */\nexport const ATTR_PROCESS_CPU_STATE = 'process.cpu.state' as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n */\nexport const PROCESS_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n */\nexport const PROCESS_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * Enum value \"wait\" for attribute {@link ATTR_PROCESS_CPU_STATE}.\n */\nexport const PROCESS_CPU_STATE_VALUE_WAIT = \"wait\" as const;\n\n/**\n * The date and time the process was created, in ISO 8601 format.\n * \n * @example 2023-11-21T09:25:34.853Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_CREATION_TIME = 'process.creation.time' as const;\n\n/**\n * The GNU build ID as found in the `.note.gnu.build-id` ELF section (hex string).\n * \n * @example c89b11207f6479603b0d49bf291c092c2b719293\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GNU = 'process.executable.build_id.gnu' as const;\n\n/**\n * The Go build ID as retrieved by `go tool buildid `.\n * \n * @example foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.go' as const;\n\n/**\n * Profiling specific build ID for executables. See the OTel specification for Profiles for more information.\n * \n * @example 600DCAFE4A110000F2BF38C493F5FB92\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling' as const;\n\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 * @example otelcol\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\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 * @example /usr/bin/cmd/otelcol\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The exit code of the process.\n * \n * @example 127\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_CODE = 'process.exit.code' as const;\n\n/**\n * The date and time the process exited, in ISO 8601 format.\n * \n * @example 2023-11-21T09:26:12.315Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXIT_TIME = 'process.exit.time' as const;\n\n/**\n * The PID of the process's group leader. This is also the process group ID (PGID) of the process.\n * \n * @example 23\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid' as const;\n\n/**\n * Whether the process is connected to an interactive shell.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_INTERACTIVE = 'process.interactive' as const;\n\n/**\n * The username of the user that owns the process.\n * \n * @example root\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * The type of page fault for this data point. Type `major` is for major/hard page faults, and `minor` is for minor/soft page faults.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PAGING_FAULT_TYPE = 'process.paging.fault_type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_PROCESS_PAGING_FAULT_TYPE}.\n */\nexport const PROCESS_PAGING_FAULT_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Parent Process identifier (PPID).\n * \n * @example 111\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PARENT_PID = 'process.parent_pid' as const;\n\n/**\n * Process identifier (PID).\n * \n * @example 1234\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * The real user ID (RUID) of the process.\n * \n * @example 1000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_ID = 'process.real_user.id' as const;\n\n/**\n * The username of the real user of the process.\n * \n * @example operator\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_REAL_USER_NAME = 'process.real_user.name' as const;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n * \n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description' as const;\n\n/**\n * The name of the runtime of this process.\n * \n * @example OpenJDK Runtime Environment\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n * \n * @example \"14.0.2\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The saved user ID (SUID) of the process.\n * \n * @example 1002\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_ID = 'process.saved_user.id' as const;\n\n/**\n * The username of the saved user.\n * \n * @example operator\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SAVED_USER_NAME = 'process.saved_user.name' as const;\n\n/**\n * The PID of the process's session leader. This is also the session ID (SID) of the process.\n * \n * @example 14\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_SESSION_LEADER_PID = 'process.session_leader.pid' as const;\n\n/**\n * Process title (proctitle)\n * \n * @example cat /etc/hostname\n * @example xfce4-session\n * @example bash\n * \n * @note In many Unix-like systems, process title (proctitle), is the string that represents the name or command line of a running process, displayed by system monitoring tools like ps, top, and htop.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_TITLE = 'process.title' as const;\n\n/**\n * The effective user ID (EUID) of the process.\n * \n * @example 1001\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_USER_ID = 'process.user.id' as const;\n\n/**\n * The username of the effective user of the process.\n * \n * @example root\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_USER_NAME = 'process.user.name' as const;\n\n/**\n * Virtual process identifier.\n * \n * @example 12\n * \n * @note The process ID within a PID namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_VPID = 'process.vpid' as const;\n\n/**\n * The working directory of the process.\n * \n * @example /root\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_WORKING_DIRECTORY = 'process.working_directory' as const;\n\n/**\n * Describes the interpreter or compiler of a single frame.\n * \n * @example cpython\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROFILE_FRAME_TYPE = 'profile.frame.type' as const;\n\n/**\n * Enum value \"cpython\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_CPYTHON = \"cpython\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"jvm\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_JVM = \"jvm\" as const;\n\n/**\n * Enum value \"kernel\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_KERNEL = \"kernel\" as const;\n\n/**\n * Enum value \"native\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_NATIVE = \"native\" as const;\n\n/**\n * Enum value \"perl\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PERL = \"perl\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"v8js\" for attribute {@link ATTR_PROFILE_FRAME_TYPE}.\n */\nexport const PROFILE_FRAME_TYPE_VALUE_V8JS = \"v8js\" as const;\n\n/**\n * The [error codes](https://connect.build/docs/protocol/#error-codes) of the Connect request. Error codes are always string values.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"already_exists\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_ALREADY_EXISTS = \"already_exists\" as const;\n\n/**\n * Enum value \"cancelled\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_CANCELLED = \"cancelled\" as const;\n\n/**\n * Enum value \"data_loss\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DATA_LOSS = \"data_loss\" as const;\n\n/**\n * Enum value \"deadline_exceeded\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_DEADLINE_EXCEEDED = \"deadline_exceeded\" as const;\n\n/**\n * Enum value \"failed_precondition\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_FAILED_PRECONDITION = \"failed_precondition\" as const;\n\n/**\n * Enum value \"internal\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INTERNAL = \"internal\" as const;\n\n/**\n * Enum value \"invalid_argument\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_INVALID_ARGUMENT = \"invalid_argument\" as const;\n\n/**\n * Enum value \"not_found\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_NOT_FOUND = \"not_found\" as const;\n\n/**\n * Enum value \"out_of_range\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_OUT_OF_RANGE = \"out_of_range\" as const;\n\n/**\n * Enum value \"permission_denied\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_PERMISSION_DENIED = \"permission_denied\" as const;\n\n/**\n * Enum value \"resource_exhausted\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_RESOURCE_EXHAUSTED = \"resource_exhausted\" as const;\n\n/**\n * Enum value \"unauthenticated\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAUTHENTICATED = \"unauthenticated\" as const;\n\n/**\n * Enum value \"unavailable\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNAVAILABLE = \"unavailable\" as const;\n\n/**\n * Enum value \"unimplemented\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNIMPLEMENTED = \"unimplemented\" as const;\n\n/**\n * Enum value \"unknown\" for attribute {@link ATTR_RPC_CONNECT_RPC_ERROR_CODE}.\n */\nexport const RPC_CONNECT_RPC_ERROR_CODE_VALUE_UNKNOWN = \"unknown\" as const;\n\n/**\n * Connect request metadata, `` being the normalized Connect Metadata key (lowercase), the value being the metadata values.\n * \n * @example rpc.request.metadata.my-custom-metadata-attribute=[\"1.2.3.4\", \"1.2.3.5\"]\n * \n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_CONNECT_RPC_REQUEST_METADATA = (key: string) => `rpc.connect_rpc.request.metadata.${key}`;\n\n/**\n * Connect response metadata, `` being the normalized Connect Metadata key (lowercase), the value being the metadata values.\n * \n * @example rpc.response.metadata.my-custom-metadata-attribute=[\"attribute_value\"]\n * \n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA = (key: string) => `rpc.connect_rpc.response.metadata.${key}`;\n\n/**\n * gRPC request metadata, `` being the normalized gRPC Metadata key (lowercase), the value being the metadata values.\n * \n * @example rpc.grpc.request.metadata.my-custom-metadata-attribute=[\"1.2.3.4\", \"1.2.3.5\"]\n * \n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_GRPC_REQUEST_METADATA = (key: string) => `rpc.grpc.request.metadata.${key}`;\n\n/**\n * gRPC response metadata, `` being the normalized gRPC Metadata key (lowercase), the value being the metadata values.\n * \n * @example rpc.grpc.response.metadata.my-custom-metadata-attribute=[\"attribute_value\"]\n * \n * @note Instrumentations **SHOULD** require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_GRPC_RESPONSE_METADATA = (key: string) => `rpc.grpc.response.metadata.${key}`;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code' as const;\n\n/**\n * Enum value 0 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OK = 0 as const;\n\n/**\n * Enum value 1 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_CANCELLED = 1 as const;\n\n/**\n * Enum value 2 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN = 2 as const;\n\n/**\n * Enum value 3 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT = 3 as const;\n\n/**\n * Enum value 4 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED = 4 as const;\n\n/**\n * Enum value 5 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND = 5 as const;\n\n/**\n * Enum value 6 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS = 6 as const;\n\n/**\n * Enum value 7 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED = 7 as const;\n\n/**\n * Enum value 8 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED = 8 as const;\n\n/**\n * Enum value 9 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION = 9 as const;\n\n/**\n * Enum value 10 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_ABORTED = 10 as const;\n\n/**\n * Enum value 11 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE = 11 as const;\n\n/**\n * Enum value 12 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED = 12 as const;\n\n/**\n * Enum value 13 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_INTERNAL = 13 as const;\n\n/**\n * Enum value 14 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE = 14 as const;\n\n/**\n * Enum value 15 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS = 15 as const;\n\n/**\n * Enum value 16 for attribute {@link ATTR_RPC_GRPC_STATUS_CODE}.\n */\nexport const RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED = 16 as const;\n\n/**\n * `error.code` property of response if it is an error response.\n * \n * @example -32700\n * @example 100\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code' as const;\n\n/**\n * `error.message` property of response if it is an error response.\n * \n * @example Parse error\n * @example User already exists\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message' as const;\n\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 * @example 10\n * @example request-7\n * @example\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id' as const;\n\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 doesn't specify this, the value can be omitted.\n * \n * @example 2.0\n * @example 1.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version' as const;\n\n/**\n * Compressed size of the message in bytes.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_COMPRESSED_SIZE = 'rpc.message.compressed_size' as const;\n\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_ID = 'rpc.message.id' as const;\n\n/**\n * Whether this is a received or sent message.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_TYPE = 'rpc.message.type' as const;\n\n/**\n * Enum value \"RECEIVED\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_RECEIVED = \"RECEIVED\" as const;\n\n/**\n * Enum value \"SENT\" for attribute {@link ATTR_RPC_MESSAGE_TYPE}.\n */\nexport const RPC_MESSAGE_TYPE_VALUE_SENT = \"SENT\" as const;\n\n/**\n * Uncompressed size of the message in bytes.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size' as const;\n\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n * \n * @example \"exampleMethod\"\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_METHOD = 'rpc.method' as const;\n\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n * \n * @example \"myservice.EchoService\"\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_SERVICE = 'rpc.service' as const;\n\n/**\n * A string identifying the remoting system. See below for a list of well-known identifiers.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_RPC_SYSTEM = 'rpc.system' as const;\n\n/**\n * Enum value \"apache_dubbo\" for attribute {@link ATTR_RPC_SYSTEM}.\n */\nexport const RPC_SYSTEM_VALUE_APACHE_DUBBO = \"apache_dubbo\" as const;\n\n/**\n * Enum value \"connect_rpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n */\nexport const RPC_SYSTEM_VALUE_CONNECT_RPC = \"connect_rpc\" as const;\n\n/**\n * Enum value \"dotnet_wcf\" for attribute {@link ATTR_RPC_SYSTEM}.\n */\nexport const RPC_SYSTEM_VALUE_DOTNET_WCF = \"dotnet_wcf\" as const;\n\n/**\n * Enum value \"grpc\" for attribute {@link ATTR_RPC_SYSTEM}.\n */\nexport const RPC_SYSTEM_VALUE_GRPC = \"grpc\" as const;\n\n/**\n * Enum value \"java_rmi\" for attribute {@link ATTR_RPC_SYSTEM}.\n */\nexport const RPC_SYSTEM_VALUE_JAVA_RMI = \"java_rmi\" as const;\n\n/**\n * The string ID of the service instance.\n * \n * @example 627cc493-f310-47de-96bd-71410b7dec09\n * \n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n * \n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n * \n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n * \n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n * \n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * A namespace for `service.name`.\n * \n * @example Shop\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 * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * A unique id to identify a session.\n * \n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_ID = 'session.id' as const;\n\n/**\n * The previous `session.id` for this user, when known.\n * \n * @example \"00112233-4455-6677-8899-aabbccddeeff\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SESSION_PREVIOUS_ID = 'session.previous_id' as const;\n\n/**\n * Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n * \n * @example source.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n * \n * @note When observed from the destination side, and when communicating through an intermediary, `source.address` **SHOULD** represent the source address behind any intermediaries, for example proxies, if it's available.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_ADDRESS = 'source.address' as const;\n\n/**\n * Source port number\n * \n * @example 3389\n * @example 2888\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SOURCE_PORT = 'source.port' as const;\n\n/**\n * Deprecated, use `db.client.connection.state` instead.\n * \n * @example idle\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `db.client.connection.state`.\n */\nexport const ATTR_STATE = 'state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_STATE}.\n */\nexport const STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_STATE}.\n */\nexport const STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The logical CPU number [0..n-1]\n * \n * @example 1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_CPU_LOGICAL_NUMBER = 'system.cpu.logical_number' as const;\n\n/**\n * Deprecated, use `cpu.mode` instead.\n * \n * @example idle\n * @example interrupt\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `cpu.mode`\n */\nexport const ATTR_SYSTEM_CPU_STATE = 'system.cpu.state' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IDLE = \"idle\" as const;\n\n/**\n * Enum value \"interrupt\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_INTERRUPT = \"interrupt\" as const;\n\n/**\n * Enum value \"iowait\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_IOWAIT = \"iowait\" as const;\n\n/**\n * Enum value \"nice\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_NICE = \"nice\" as const;\n\n/**\n * Enum value \"steal\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_STEAL = \"steal\" as const;\n\n/**\n * Enum value \"system\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_SYSTEM = \"system\" as const;\n\n/**\n * Enum value \"user\" for attribute {@link ATTR_SYSTEM_CPU_STATE}.\n */\nexport const SYSTEM_CPU_STATE_VALUE_USER = \"user\" as const;\n\n/**\n * The device identifier\n * \n * @example (identifier)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_DEVICE = 'system.device' as const;\n\n/**\n * The filesystem mode\n * \n * @example rw, ro\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MODE = 'system.filesystem.mode' as const;\n\n/**\n * The filesystem mount path\n * \n * @example /mnt/data\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_MOUNTPOINT = 'system.filesystem.mountpoint' as const;\n\n/**\n * The filesystem state\n * \n * @example used\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_STATE = 'system.filesystem.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"reserved\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_RESERVED = \"reserved\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_STATE}.\n */\nexport const SYSTEM_FILESYSTEM_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The filesystem type\n * \n * @example ext4\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type' as const;\n\n/**\n * Enum value \"exfat\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXFAT = \"exfat\" as const;\n\n/**\n * Enum value \"ext4\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_EXT4 = \"ext4\" as const;\n\n/**\n * Enum value \"fat32\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_FAT32 = \"fat32\" as const;\n\n/**\n * Enum value \"hfsplus\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_HFSPLUS = \"hfsplus\" as const;\n\n/**\n * Enum value \"ntfs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_NTFS = \"ntfs\" as const;\n\n/**\n * Enum value \"refs\" for attribute {@link ATTR_SYSTEM_FILESYSTEM_TYPE}.\n */\nexport const SYSTEM_FILESYSTEM_TYPE_VALUE_REFS = \"refs\" as const;\n\n/**\n * The memory state\n * \n * @example free\n * @example cached\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_MEMORY_STATE = 'system.memory.state' as const;\n\n/**\n * Enum value \"buffers\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_BUFFERS = \"buffers\" as const;\n\n/**\n * Enum value \"cached\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_CACHED = \"cached\" as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"shared\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_SHARED = \"shared\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_MEMORY_STATE}.\n */\nexport const SYSTEM_MEMORY_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * A stateless protocol **MUST NOT** set this attribute\n * \n * @example close_wait\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_NETWORK_STATE = 'system.network.state' as const;\n\n/**\n * Enum value \"close\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE = \"close\" as const;\n\n/**\n * Enum value \"close_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSE_WAIT = \"close_wait\" as const;\n\n/**\n * Enum value \"closing\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_CLOSING = \"closing\" as const;\n\n/**\n * Enum value \"delete\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_DELETE = \"delete\" as const;\n\n/**\n * Enum value \"established\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_ESTABLISHED = \"established\" as const;\n\n/**\n * Enum value \"fin_wait_1\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_1 = \"fin_wait_1\" as const;\n\n/**\n * Enum value \"fin_wait_2\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_FIN_WAIT_2 = \"fin_wait_2\" as const;\n\n/**\n * Enum value \"last_ack\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LAST_ACK = \"last_ack\" as const;\n\n/**\n * Enum value \"listen\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_LISTEN = \"listen\" as const;\n\n/**\n * Enum value \"syn_recv\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_RECV = \"syn_recv\" as const;\n\n/**\n * Enum value \"syn_sent\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_SYN_SENT = \"syn_sent\" as const;\n\n/**\n * Enum value \"time_wait\" for attribute {@link ATTR_SYSTEM_NETWORK_STATE}.\n */\nexport const SYSTEM_NETWORK_STATE_VALUE_TIME_WAIT = \"time_wait\" as const;\n\n/**\n * The paging access direction\n * \n * @example in\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_DIRECTION = 'system.paging.direction' as const;\n\n/**\n * Enum value \"in\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_IN = \"in\" as const;\n\n/**\n * Enum value \"out\" for attribute {@link ATTR_SYSTEM_PAGING_DIRECTION}.\n */\nexport const SYSTEM_PAGING_DIRECTION_VALUE_OUT = \"out\" as const;\n\n/**\n * The memory paging state\n * \n * @example free\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_STATE = 'system.paging.state' as const;\n\n/**\n * Enum value \"free\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_FREE = \"free\" as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_SYSTEM_PAGING_STATE}.\n */\nexport const SYSTEM_PAGING_STATE_VALUE_USED = \"used\" as const;\n\n/**\n * The memory paging type\n * \n * @example minor\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PAGING_TYPE = 'system.paging.type' as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_SYSTEM_PAGING_TYPE}.\n */\nexport const SYSTEM_PAGING_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * The process state, e.g., [Linux Process State Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES)\n * \n * @example running\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SYSTEM_PROCESS_STATUS = 'system.process.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESS_STATUS}.\n */\nexport const SYSTEM_PROCESS_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * Deprecated, use `system.process.status` instead.\n * \n * @example running\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `system.process.status`.\n */\nexport const ATTR_SYSTEM_PROCESSES_STATUS = 'system.processes.status' as const;\n\n/**\n * Enum value \"defunct\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_DEFUNCT = \"defunct\" as const;\n\n/**\n * Enum value \"running\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_RUNNING = \"running\" as const;\n\n/**\n * Enum value \"sleeping\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_SLEEPING = \"sleeping\" as const;\n\n/**\n * Enum value \"stopped\" for attribute {@link ATTR_SYSTEM_PROCESSES_STATUS}.\n */\nexport const SYSTEM_PROCESSES_STATUS_VALUE_STOPPED = \"stopped\" as const;\n\n/**\n * The name of the auto instrumentation agent or distribution, if used.\n * \n * @example parts-unlimited-java\n * \n * @note Official auto instrumentation agents and distributions **SHOULD** set the `telemetry.distro.name` attribute to\n * a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name' as const;\n\n/**\n * The version string of the auto instrumentation agent or distribution, if used.\n * \n * @example 1.2.3\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version' as const;\n\n/**\n * The fully qualified human readable name of the [test case](https://en.wikipedia.org/wiki/Test_case).\n * \n * @example org.example.TestCase1.test1\n * @example example/tests/TestCase1.test1\n * @example ExampleTestCase1_test1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_NAME = 'test.case.name' as const;\n\n/**\n * The status of the actual test case result from test execution.\n * \n * @example pass\n * @example fail\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_CASE_RESULT_STATUS = 'test.case.result.status' as const;\n\n/**\n * Enum value \"fail\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_FAIL = \"fail\" as const;\n\n/**\n * Enum value \"pass\" for attribute {@link ATTR_TEST_CASE_RESULT_STATUS}.\n */\nexport const TEST_CASE_RESULT_STATUS_VALUE_PASS = \"pass\" as const;\n\n/**\n * The human readable name of a [test suite](https://en.wikipedia.org/wiki/Test_suite).\n * \n * @example TestSuite1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_NAME = 'test.suite.name' as const;\n\n/**\n * The status of the test suite run.\n * \n * @example success\n * @example failure\n * @example skipped\n * @example aborted\n * @example timed_out\n * @example in_progress\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TEST_SUITE_RUN_STATUS = 'test.suite.run.status' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"in_progress\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_IN_PROGRESS = \"in_progress\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * Enum value \"timed_out\" for attribute {@link ATTR_TEST_SUITE_RUN_STATUS}.\n */\nexport const TEST_SUITE_RUN_STATUS_VALUE_TIMED_OUT = \"timed_out\" as const;\n\n/**\n * Current \"managed\" thread ID (as opposed to OS thread ID).\n * \n * @example 42\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_ID = 'thread.id' as const;\n\n/**\n * Current thread name.\n * \n * @example \"main\"\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_THREAD_NAME = 'thread.name' as const;\n\n/**\n * String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection.\n * \n * @example TLS_RSA_WITH_3DES_EDE_CBC_SHA\n * @example TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\n * \n * @note The values allowed for `tls.cipher` **MUST** be one of the `Descriptions` of the [registered TLS Cipher Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CIPHER = 'tls.cipher' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.\n * \n * @example MII...\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE = 'tls.client.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.\n * \n * @example [\"MII...\", \"MI...\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_CERTIFICATE_CHAIN = 'tls.client.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_MD5 = 'tls.client.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA1 = 'tls.client.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_HASH_SHA256 = 'tls.client.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n * \n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_ISSUER = 'tls.client.issuer' as const;\n\n/**\n * A hash that identifies clients based on how they perform an SSL/TLS handshake.\n * \n * @example d4e5b18d6b55c71272893221c96ba240\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_JA3 = 'tls.client.ja3' as const;\n\n/**\n * Date/Time indicating when client certificate is no longer considered valid.\n * \n * @example 2021-01-01T00:00:00.000Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_AFTER = 'tls.client.not_after' as const;\n\n/**\n * Date/Time indicating when client certificate is first considered valid.\n * \n * @example 1970-01-01T00:00:00.000Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_NOT_BEFORE = 'tls.client.not_before' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n * \n * @example opentelemetry.io\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n * \n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_TLS_CLIENT_SERVER_NAME = 'tls.client.server_name' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the client.\n * \n * @example CN=myclient, OU=Documentation Team, DC=example, DC=com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUBJECT = 'tls.client.subject' as const;\n\n/**\n * Array of ciphers offered by the client during the client hello.\n * \n * @example [\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CLIENT_SUPPORTED_CIPHERS = 'tls.client.supported_ciphers' as const;\n\n/**\n * String indicating the curve used for the given cipher, when applicable\n * \n * @example secp256r1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_CURVE = 'tls.curve' as const;\n\n/**\n * Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.\n * \n * @example true\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_ESTABLISHED = 'tls.established' as const;\n\n/**\n * String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.\n * \n * @example http/1.1\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_NEXT_PROTOCOL = 'tls.next_protocol' as const;\n\n/**\n * Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_NAME = 'tls.protocol.name' as const;\n\n/**\n * Enum value \"ssl\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_SSL = \"ssl\" as const;\n\n/**\n * Enum value \"tls\" for attribute {@link ATTR_TLS_PROTOCOL_NAME}.\n */\nexport const TLS_PROTOCOL_NAME_VALUE_TLS = \"tls\" as const;\n\n/**\n * Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES)\n * \n * @example 1.2\n * @example 3\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_PROTOCOL_VERSION = 'tls.protocol.version' as const;\n\n/**\n * Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.\n * \n * @example true\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_RESUMED = 'tls.resumed' as const;\n\n/**\n * PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.\n * \n * @example MII...\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE = 'tls.server.certificate' as const;\n\n/**\n * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.\n * \n * @example [\"MII...\", \"MI...\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_CERTIFICATE_CHAIN = 'tls.server.certificate_chain' as const;\n\n/**\n * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_MD5 = 'tls.server.hash.md5' as const;\n\n/**\n * Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 9E393D93138888D288266C2D915214D1D1CCEB2A\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA1 = 'tls.server.hash.sha1' as const;\n\n/**\n * Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.\n * \n * @example 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_HASH_SHA256 = 'tls.server.hash.sha256' as const;\n\n/**\n * Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client.\n * \n * @example CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_ISSUER = 'tls.server.issuer' as const;\n\n/**\n * A hash that identifies servers based on how they perform an SSL/TLS handshake.\n * \n * @example d4e5b18d6b55c71272893221c96ba240\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_JA3S = 'tls.server.ja3s' as const;\n\n/**\n * Date/Time indicating when server certificate is no longer considered valid.\n * \n * @example 2021-01-01T00:00:00.000Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_AFTER = 'tls.server.not_after' as const;\n\n/**\n * Date/Time indicating when server certificate is first considered valid.\n * \n * @example 1970-01-01T00:00:00.000Z\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_NOT_BEFORE = 'tls.server.not_before' as const;\n\n/**\n * Distinguished name of subject of the x.509 certificate presented by the server.\n * \n * @example CN=myserver, OU=Documentation Team, DC=example, DC=com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_TLS_SERVER_SUBJECT = 'tls.server.subject' as const;\n\n/**\n * Domain extracted from the `url.full`, such as \"opentelemetry.io\".\n * \n * @example www.foo.bar\n * @example opentelemetry.io\n * @example 3.12.167.2\n * @example [1080:0:0:0:8:800:200C:417A]\n * \n * @note In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the domain field. If the URL contains a [literal IPv6 address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by `[` and `]`, the `[` and `]` characters should also be captured in the domain field.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_DOMAIN = 'url.domain' as const;\n\n/**\n * The file extension extracted from the `url.full`, excluding the leading dot.\n * \n * @example png\n * @example gz\n * \n * @note The file extension is only set if it exists, as not every url has a file extension. When the file name has multiple extensions `example.tar.gz`, only the last one should be captured `gz`, not `tar.gz`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_EXTENSION = 'url.extension' as const;\n\n/**\n * Unmodified original URL as seen in the event source.\n * \n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example search?q=OpenTelemetry\n * \n * @note In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not.\n * `url.original` might contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case password and username **SHOULD NOT** be redacted and attribute's value **SHOULD** remain the same.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_ORIGINAL = 'url.original' as const;\n\n/**\n * Port extracted from the `url.full`\n * \n * @example 443\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_PORT = 'url.port' as const;\n\n/**\n * The highest registered url domain, stripped of the subdomain.\n * \n * @example example.com\n * @example foo.co.uk\n * \n * @note This value can be determined precisely with the [public suffix list](http://publicsuffix.org). For example, the registered domain for `foo.example.com` is `example.com`. Trying to approximate this by simply taking the last two labels will not work well for TLDs such as `co.uk`.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_REGISTERED_DOMAIN = 'url.registered_domain' as const;\n\n/**\n * The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\n * \n * @example east\n * @example sub2.sub1\n * \n * @note The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`, with no trailing period.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_SUBDOMAIN = 'url.subdomain' as const;\n\n/**\n * The low-cardinality template of an [absolute path reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).\n * \n * @example /users/{id}\n * @example /users/:id\n * @example /users?id={id}\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TEMPLATE = 'url.template' as const;\n\n/**\n * The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is `com`.\n * \n * @example com\n * @example co.uk\n * \n * @note This value can be determined precisely with the [public suffix list](http://publicsuffix.org).\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_URL_TOP_LEVEL_DOMAIN = 'url.top_level_domain' as const;\n\n/**\n * User email address.\n * \n * @example a.einstein@example.com\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_EMAIL = 'user.email' as const;\n\n/**\n * User's full name\n * \n * @example Albert Einstein\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_FULL_NAME = 'user.full_name' as const;\n\n/**\n * Unique user hash to correlate information for a user in anonymized form.\n * \n * @example 364fc68eaf4c8acec74a4e52d7d1feaa\n * \n * @note Useful if `user.id` or `user.name` contain confidential information and cannot be used.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_HASH = 'user.hash' as const;\n\n/**\n * Unique identifier of the user.\n * \n * @example S-1-5-21-202424912787-2692429404-2351956786-1000\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ID = 'user.id' as const;\n\n/**\n * Short name or login/username of the user.\n * \n * @example a.einstein\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_NAME = 'user.name' as const;\n\n/**\n * Array of user roles at the time of the event.\n * \n * @example [\"admin\", \"reporting_user\"]\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_ROLES = 'user.roles' as const;\n\n/**\n * Name of the user-agent extracted from original. Usually refers to the browser's name.\n * \n * @example Safari\n * @example YourApp\n * \n * @note [Example](https://www.whatsmyua.info) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name **SHOULD** be selected. In such a scenario it should align with `user_agent.version`\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_NAME = 'user_agent.name' as const;\n\n/**\n * Version of the user-agent extracted from original. Usually refers to the browser's version\n * \n * @example 14.1.2\n * @example 1.0.0\n * \n * @note [Example](https://www.whatsmyua.info) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version **SHOULD** be selected. In such a scenario it should align with `user_agent.name`\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_VERSION = 'user_agent.version' as const;\n\n/**\n * The type of garbage collection.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_GC_TYPE = 'v8js.gc.type' as const;\n\n/**\n * Enum value \"incremental\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n */\nexport const V8JS_GC_TYPE_VALUE_INCREMENTAL = \"incremental\" as const;\n\n/**\n * Enum value \"major\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n */\nexport const V8JS_GC_TYPE_VALUE_MAJOR = \"major\" as const;\n\n/**\n * Enum value \"minor\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n */\nexport const V8JS_GC_TYPE_VALUE_MINOR = \"minor\" as const;\n\n/**\n * Enum value \"weakcb\" for attribute {@link ATTR_V8JS_GC_TYPE}.\n */\nexport const V8JS_GC_TYPE_VALUE_WEAKCB = \"weakcb\" as const;\n\n/**\n * The name of the space type of heap memory.\n * \n * @note Value can be retrieved from value `space_name` of [`v8.getHeapSpaceStatistics()`](https://nodejs.org/api/v8.html#v8getheapspacestatistics)\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name' as const;\n\n/**\n * Enum value \"code_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_CODE_SPACE = \"code_space\" as const;\n\n/**\n * Enum value \"large_object_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_LARGE_OBJECT_SPACE = \"large_object_space\" as const;\n\n/**\n * Enum value \"map_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_MAP_SPACE = \"map_space\" as const;\n\n/**\n * Enum value \"new_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = \"new_space\" as const;\n\n/**\n * Enum value \"old_space\" for attribute {@link ATTR_V8JS_HEAP_SPACE_NAME}.\n */\nexport const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = \"old_space\" as const;\n\n/**\n * The ID of the change (pull request/merge request) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.\n * \n * @example 123\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;\n\n/**\n * The human readable title of the change (pull request/merge request). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.\n * \n * @example Fixes broken thing\n * @example feat: add my new feature\n * @example [chore] update dependency\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;\n\n/**\n * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.\n * \n * @example my-feature-branch\n * @example tag-1-test\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;\n\n/**\n * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.\n * \n * @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc\n * @example main\n * @example 123\n * @example HEAD\n * \n * @note The revision can be a full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),\n * of the recorded change to a ref within a repository pointing to a\n * commit [commit](https://git-scm.com/docs/git-commit) object. It does\n * not necessarily have to be a hash; it can simply define a\n * [revision number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)\n * which is an integer that is monotonically increasing. In cases where\n * it is identical to the `ref.name`, it **SHOULD** still be included. It is\n * up to the implementer to decide which value to set as the revision\n * based on the VCS system and situational context.\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;\n\n/**\n * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.\n * \n * @example branch\n * @example tag\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type' as const;\n\n/**\n * Enum value \"branch\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = \"branch\" as const;\n\n/**\n * Enum value \"tag\" for attribute {@link ATTR_VCS_REPOSITORY_REF_TYPE}.\n */\nexport const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = \"tag\" as const;\n\n/**\n * The [URL](https://en.wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository.\n * \n * @example https://github.com/opentelemetry/open-telemetry-collector-contrib\n * @example https://gitlab.com/my-org/my-project/my-projects-project/repo\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full' as const;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n * \n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\n/**\n * The name of the web engine.\n * \n * @example WildFly\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\n/**\n * The version of the web engine.\n * \n * @example 21.0.0\n * \n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n\n","import { context, trace } from '@opentelemetry/api';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { Resource, ResourceAttributes } from '@opentelemetry/resources';\nimport { BatchSpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_SERVICE_VERSION,\n SEMRESATTRS_DEPLOYMENT_ENVIRONMENT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_DEPLOYMENT_ENVIRONMENT_NAME,\n ATTR_SERVICE_NAMESPACE,\n // False positive. Package can be resolved.\n // eslint-disable-next-line import/no-unresolved\n} from '@opentelemetry/semantic-conventions/incubating';\n\nimport { BaseInstrumentation, Transport, VERSION } from '@grafana/faro-web-sdk';\n\nimport { FaroTraceExporter } from './faroTraceExporter';\nimport { getDefaultOTELInstrumentations } from './getDefaultOTELInstrumentations';\nimport { getSamplingDecision } from './sampler';\nimport { FaroSessionSpanProcessor } from './sessionSpanProcessor';\nimport type { TracingInstrumentationOptions } from './types';\n\n// the providing of app name here is not great\n// should delay initialization and provide the full Faro config,\n// taking app name from it\n\nexport class TracingInstrumentation extends BaseInstrumentation {\n name = '@grafana/faro-web-tracing';\n version = VERSION;\n\n static SCHEDULED_BATCH_DELAY_MS = 1000;\n\n constructor(private options: TracingInstrumentationOptions = {}) {\n super();\n }\n\n initialize(): void {\n const options = this.options;\n const attributes: ResourceAttributes = {};\n\n if (this.config.app.name) {\n attributes[ATTR_SERVICE_NAME] = this.config.app.name;\n }\n\n if (this.config.app.namespace) {\n attributes[ATTR_SERVICE_NAMESPACE] = this.config.app.namespace;\n }\n\n if (this.config.app.version) {\n attributes[ATTR_SERVICE_VERSION] = this.config.app.version;\n }\n\n if (this.config.app.environment) {\n attributes[ATTR_DEPLOYMENT_ENVIRONMENT_NAME] = this.config.app.environment;\n /**\n * @deprecated will be removed in the future and has been replaced by ATTR_DEPLOYMENT_ENVIRONMENT_NAME (deployment.environment.name)\n */\n attributes[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT] = this.config.app.environment;\n }\n\n Object.assign(attributes, options.resourceAttributes);\n\n const resource = Resource.default().merge(new Resource(attributes));\n\n const provider = new WebTracerProvider({\n resource,\n sampler: {\n shouldSample: () => {\n return {\n decision: getSamplingDecision(this.api.getSession()),\n };\n },\n },\n });\n\n provider.addSpanProcessor(\n options.spanProcessor ??\n new FaroSessionSpanProcessor(\n new BatchSpanProcessor(new FaroTraceExporter({ api: this.api }), {\n scheduledDelayMillis: TracingInstrumentation.SCHEDULED_BATCH_DELAY_MS,\n maxExportBatchSize: 30,\n }),\n this.metas\n )\n );\n\n provider.register({\n propagator: options.propagator ?? new W3CTraceContextPropagator(),\n contextManager: options.contextManager ?? new ZoneContextManager(),\n });\n\n const { propagateTraceHeaderCorsUrls, fetchInstrumentationOptions, xhrInstrumentationOptions } =\n this.options.instrumentationOptions ?? {};\n\n registerInstrumentations({\n instrumentations:\n options.instrumentations ??\n getDefaultOTELInstrumentations({\n ignoreUrls: this.getIgnoreUrls(),\n propagateTraceHeaderCorsUrls,\n fetchInstrumentationOptions,\n xhrInstrumentationOptions,\n }),\n });\n\n this.api.initOTEL(trace, context);\n }\n\n private getIgnoreUrls(): Array {\n return this.transports.transports.flatMap((transport: Transport) => transport.getIgnoreUrls());\n }\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//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\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 const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\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' as const;\n\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' as const;\n\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' as const;\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' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\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 const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * HTTP request headers, `` 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 const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\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 const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\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' as const;\n\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' as const;\n\n/**\n * HTTP response headers, `` 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 const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\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' as const;\n\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 const ATTR_HTTP_ROUTE = 'http.route' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * The type of memory.\n * \n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n * \n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\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' as const;\n\n/**\n * Local port number of the network connection.\n * \n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\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' as const;\n\n/**\n * Peer port number of the network connection.\n * \n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\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 const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\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' as const;\n\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 const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\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 const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\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' as const;\n\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\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' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\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' as const;\n\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 const ATTR_URL_FULL = 'url.full' as const;\n\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' as const;\n\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 const ATTR_URL_QUERY = 'url.query' as const;\n\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' as const;\n\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' as const;\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","const disableLogs = () => {\n if (process.env.REACT_APP_NODE_ENV === \"production\") {\n console.log(\"disabling\");\n console.log = () => {};\n console.warn = () => {};\n console.error = () => {};\n console.info = () => {};\n console.debug = () => {};\n }\n};\n\nexport default disableLogs;\n","\"use client\";\n\n// src/provider-context.ts\nimport { createContext } from \"@nextui-org/react-utils\";\nvar [ProviderContext, useProviderContext] = createContext({\n name: \"ProviderContext\",\n strict: false\n});\n\nexport {\n ProviderContext,\n useProviderContext\n};\n","\"use client\";\n\n// src/context.ts\nimport * as React from \"react\";\nfunction createContext2(options = {}) {\n const {\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name\n } = options;\n const Context = React.createContext(void 0);\n Context.displayName = name;\n function useContext2() {\n var _a;\n const context = React.useContext(Context);\n if (!context && strict) {\n const error = new Error(errorMessage);\n error.name = \"ContextError\";\n (_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, error, useContext2);\n throw error;\n }\n return context;\n }\n return [Context.Provider, useContext2, Context];\n}\n\nexport {\n createContext2 as createContext\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// https://en.wikipedia.org/wiki/Right-to-left\nconst RTL_SCRIPTS = new Set(['Arab', 'Syrc', 'Samr', 'Mand', 'Thaa', 'Mend', 'Nkoo', 'Adlm', 'Rohg', 'Hebr']);\nconst RTL_LANGS = new Set(['ae', 'ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he', 'ku', 'mzn', 'nqo', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi']);\n\n/**\n * Determines if a locale is read right to left using [Intl.Locale]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale}.\n */\nexport function isRTL(localeString: string) {\n // If the Intl.Locale API is available, use it to get the locale's text direction.\n if (Intl.Locale) {\n let locale = new Intl.Locale(localeString).maximize();\n\n // Use the text info object to get the direction if possible.\n // @ts-ignore - this was implemented as a property by some browsers before it was standardized as a function.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getTextInfo\n let textInfo = typeof locale.getTextInfo === 'function' ? locale.getTextInfo() : locale.textInfo;\n if (textInfo) {\n return textInfo.direction === 'rtl';\n }\n\n // Fallback: guess using the script.\n // This is more accurate than guessing by language, since languages can be written in multiple scripts.\n if (locale.script) {\n return RTL_SCRIPTS.has(locale.script);\n }\n }\n\n // If not, just guess by the language (first part of the locale)\n let lang = localeString.split('-')[0];\n return RTL_LANGS.has(lang);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {JSX, ReactNode, useContext, useLayoutEffect, useMemo, useRef, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n prefix: string,\n current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\n\nconst SSRContext = React.createContext(defaultContext);\nconst IsSSRContext = React.createContext(false);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n// This is only used in React < 18.\nfunction LegacySSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let counter = useCounter(cur === defaultContext);\n let [isSSR, setIsSSR] = useState(true);\n let value: SSRContextValue = useMemo(() => ({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [cur, counter]);\n\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') {\n // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n setIsSSR(false);\n }, []);\n }\n\n return (\n \n \n {props.children}\n \n \n );\n}\n\nlet warnedAboutSSRProvider = false;\n\n/**\n * When using SSR with React Aria in React 16 or 17, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n if (typeof React['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && !warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n warnedAboutSSRProvider = true;\n }\n return <>{props.children};\n }\n return ;\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet componentIds = new WeakMap();\n\nfunction useCounter(isDisabled = false) {\n let ctx = useContext(SSRContext);\n let ref = useRef(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner?.current;\n if (currentOwner) {\n let prevComponentValue = componentIds.get(currentOwner);\n if (prevComponentValue == null) {\n // On the first render, and first call to useId, store the id and state in our weak map.\n componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n } else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n componentIds.delete(currentOwner);\n }\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\n\nfunction useLegacySSRSafeId(defaultId?: string): string {\n let ctx = useContext(SSRContext);\n\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === defaultContext && !canUseDOM) {\n console.warn('When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.');\n }\n\n let counter = useCounter(!!defaultId);\n let prefix = ctx === defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\n\nfunction useModernSSRSafeId(defaultId?: string): string {\n let id = React.useId();\n let [didSSR] = useState(useIsSSR());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\n\n// Use React.useId in React 18 if available, otherwise fall back to our old implementation.\n/** @private */\nexport const useSSRSafeId = typeof React['useId'] === 'function' ? useModernSSRSafeId : useLegacySSRSafeId;\n\nfunction getSnapshot() {\n return false;\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction subscribe(onStoreChange: () => void): () => void {\n // noop\n return () => {};\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof React['useSyncExternalStore'] === 'function') {\n return React['useSyncExternalStore'](subscribe, getSnapshot, getServerSnapshot);\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useContext(IsSSRContext);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Direction} from '@react-types/shared';\nimport {isRTL} from './utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport interface Locale {\n /** The [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt) language code for the locale. */\n locale: string,\n /** The writing direction for the locale. */\n direction: Direction\n}\n\n// Locale passed from server by PackageLocalizationProvider.\nconst localeSymbol = Symbol.for('react-aria.i18n.locale');\n\n/**\n * Gets the locale setting of the browser.\n */\nexport function getDefaultLocale(): Locale {\n let locale = typeof window !== 'undefined' && window[localeSymbol]\n // @ts-ignore\n || (typeof navigator !== 'undefined' && (navigator.language || navigator.userLanguage))\n || 'en-US';\n\n try {\n Intl.DateTimeFormat.supportedLocalesOf([locale]);\n } catch {\n locale = 'en-US';\n }\n return {\n locale,\n direction: isRTL(locale) ? 'rtl' : 'ltr'\n };\n}\n\nlet currentLocale = getDefaultLocale();\nlet listeners = new Set<(locale: Locale) => void>();\n\nfunction updateLocale() {\n currentLocale = getDefaultLocale();\n for (let listener of listeners) {\n listener(currentLocale);\n }\n}\n\n/**\n * Returns the current browser/system language, and updates when it changes.\n */\nexport function useDefaultLocale(): Locale {\n let isSSR = useIsSSR();\n let [defaultLocale, setDefaultLocale] = useState(currentLocale);\n\n useEffect(() => {\n if (listeners.size === 0) {\n window.addEventListener('languagechange', updateLocale);\n }\n\n listeners.add(setDefaultLocale);\n\n return () => {\n listeners.delete(setDefaultLocale);\n if (listeners.size === 0) {\n window.removeEventListener('languagechange', updateLocale);\n }\n };\n }, []);\n\n // We cannot determine the browser's language on the server, so default to\n // en-US. This will be updated after hydration on the client to the correct value.\n if (isSSR) {\n return {\n locale: 'en-US',\n direction: 'ltr'\n };\n }\n\n return defaultLocale;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {isRTL} from './utils';\nimport {Locale, useDefaultLocale} from './useDefaultLocale';\nimport React, {ReactNode, useContext} from 'react';\n\nexport interface I18nProviderProps {\n /** Contents that should have the locale applied. */\n children: ReactNode,\n /** The locale to apply to the children. */\n locale?: string\n}\n\nconst I18nContext = React.createContext(null);\n\n/**\n * Provides the locale for the application to all child components.\n */\nexport function I18nProvider(props: I18nProviderProps) {\n let {locale, children} = props;\n let defaultLocale = useDefaultLocale();\n\n let value: Locale = React.useMemo(() => {\n if (!locale) {\n return defaultLocale;\n }\n\n return {\n locale,\n direction: isRTL(locale) ? 'rtl' : 'ltr'\n };\n }, [defaultLocale, locale]);\n\n return (\n \n {children}\n \n );\n}\n\n/**\n * Returns the current locale and layout direction.\n */\nexport function useLocale(): Locale {\n let defaultLocale = useDefaultLocale();\n let context = useContext(I18nContext);\n return context || defaultLocale;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n element: HTMLElement,\n scrollTop: number,\n scrollLeft: number\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n if (supportsPreventScroll()) {\n element.focus({preventScroll: true});\n } else {\n let scrollableElements = getScrollableElements(element);\n element.focus();\n restoreScrollPosition(scrollableElements);\n }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll() {\n supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n let parent = element.parentNode;\n let scrollableElements: ScrollableElement[] = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n }\n parent = parent.parentNode;\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n }\n\n return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (let {element, scrollTop, scrollLeft} of scrollableElements) {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nfunction testUserAgent(re: RegExp) {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n return (\n window.navigator['userAgentData']?.brands.some((brand: {brand: string, version: string}) => re.test(brand.brand))\n ) ||\n re.test(window.navigator.userAgent);\n}\n\nfunction testPlatform(re: RegExp) {\n return typeof window !== 'undefined' && window.navigator != null\n ? re.test(window.navigator['userAgentData']?.platform || window.navigator.platform)\n : false;\n}\n\nfunction cached(fn: () => boolean) {\n if (process.env.NODE_ENV === 'test') {\n return fn;\n }\n \n let res: boolean | null = null;\n return () => {\n if (res == null) {\n res = fn();\n }\n return res;\n };\n}\n\nexport const isMac = cached(function () {\n return testPlatform(/^Mac/i);\n});\n\nexport const isIPhone = cached(function () {\n return testPlatform(/^iPhone/i);\n});\n\nexport const isIPad = cached(function () {\n return testPlatform(/^iPad/i) ||\n // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n (isMac() && navigator.maxTouchPoints > 1);\n});\n\nexport const isIOS = cached(function () {\n return isIPhone() || isIPad();\n});\n\nexport const isAppleDevice = cached(function () {\n return isMac() || isIOS();\n});\n\nexport const isWebKit = cached(function () {\n return testUserAgent(/AppleWebKit/i) && !isChrome();\n});\n\nexport const isChrome = cached(function () {\n return testUserAgent(/Chrome/i);\n});\n\nexport const isAndroid = cached(function () {\n return testUserAgent(/Android/i);\n});\n\nexport const isFirefox = cached(function () {\n return testUserAgent(/Firefox/i);\n});\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {focusWithoutScrolling, isMac, isWebKit} from './index';\nimport {Href, LinkDOMProps, RouterOptions} from '@react-types/shared';\nimport {isFirefox, isIPad} from './platform';\nimport React, {createContext, ReactNode, useContext, useMemo} from 'react';\n\ninterface Router {\n isNative: boolean,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => void,\n useHref: (href: Href) => string\n}\n\nconst RouterContext = createContext({\n isNative: true,\n open: openSyntheticLink,\n useHref: (href) => href\n});\n\ninterface RouterProviderProps {\n navigate: (path: Href, routerOptions: RouterOptions | undefined) => void,\n useHref?: (href: Href) => string,\n children: ReactNode\n}\n\n/**\n * A RouterProvider accepts a `navigate` function from a framework or client side router,\n * and provides it to all nested React Aria links to enable client side navigation.\n */\nexport function RouterProvider(props: RouterProviderProps) {\n let {children, navigate, useHref} = props;\n\n let ctx = useMemo(() => ({\n isNative: false,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => {\n getSyntheticLink(target, link => {\n if (shouldClientNavigate(link, modifiers)) {\n navigate(href, routerOptions);\n } else {\n openLink(link, modifiers);\n }\n });\n },\n useHref: useHref || ((href) => href)\n }), [navigate, useHref]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useRouter(): Router {\n return useContext(RouterContext);\n}\n\ninterface Modifiers {\n metaKey?: boolean,\n ctrlKey?: boolean,\n altKey?: boolean,\n shiftKey?: boolean\n}\n\nexport function shouldClientNavigate(link: HTMLAnchorElement, modifiers: Modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey\n );\n}\n\nexport function openLink(target: HTMLAnchorElement, modifiers: Modifiers, setOpening = true) {\n let {metaKey, ctrlKey, altKey, shiftKey} = modifiers;\n\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if (isFirefox() && window.event?.type?.startsWith('key') && target.target === '_blank') {\n if (isMac()) {\n metaKey = true;\n } else {\n ctrlKey = true;\n }\n }\n\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event = isWebKit() && isMac() && !isIPad() && process.env.NODE_ENV !== 'test'\n // @ts-ignore - keyIdentifier is a non-standard property, but it's what webkit expects\n ? new KeyboardEvent('keydown', {keyIdentifier: 'Enter', metaKey, ctrlKey, altKey, shiftKey})\n : new MouseEvent('click', {metaKey, ctrlKey, altKey, shiftKey, bubbles: true, cancelable: true});\n (openLink as any).isOpening = setOpening;\n focusWithoutScrolling(target);\n target.dispatchEvent(event);\n (openLink as any).isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n(openLink as any).isOpening = false;\n\nfunction getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void) {\n if (target instanceof HTMLAnchorElement) {\n open(target);\n } else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href')!;\n if (target.hasAttribute('data-target')) {\n link.target = target.getAttribute('data-target')!;\n }\n if (target.hasAttribute('data-rel')) {\n link.rel = target.getAttribute('data-rel')!;\n }\n if (target.hasAttribute('data-download')) {\n link.download = target.getAttribute('data-download')!;\n }\n if (target.hasAttribute('data-ping')) {\n link.ping = target.getAttribute('data-ping')!;\n }\n if (target.hasAttribute('data-referrer-policy')) {\n link.referrerPolicy = target.getAttribute('data-referrer-policy')!;\n }\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\n\nfunction openSyntheticLink(target: Element, modifiers: Modifiers) {\n getSyntheticLink(target, link => openLink(link, modifiers));\n}\n\nexport function useSyntheticLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n const href = router.useHref(props.href ?? '');\n return {\n 'data-href': props.href ? href : undefined,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\n\n/** @deprecated - For backward compatibility. */\nexport function getSyntheticLinkProps(props: LinkDOMProps) {\n return {\n 'data-href': props.href,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\n\nexport function useLinkProps(props?: LinkDOMProps) {\n let router = useRouter();\n const href = router.useHref(props?.href ?? '');\n return {\n href: props?.href ? href : undefined,\n target: props?.target,\n rel: props?.rel,\n download: props?.download,\n ping: props?.ping,\n referrerPolicy: props?.referrerPolicy\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes} from '@react-types/shared';\nimport React, {AriaAttributes, ReactNode, useContext, useEffect, useMemo, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport interface ModalProviderProps extends DOMAttributes {\n children: ReactNode\n}\n\ninterface ModalContext {\n parent: ModalContext | null,\n modalCount: number,\n addModal: () => void,\n removeModal: () => void\n}\n\nconst Context = React.createContext(null);\n\n/**\n * Each ModalProvider tracks how many modals are open in its subtree. On mount, the modals\n * trigger `addModal` to increment the count, and trigger `removeModal` on unmount to decrement it.\n * This is done recursively so that all parent providers are incremented and decremented.\n * If the modal count is greater than zero, we add `aria-hidden` to this provider to hide its\n * subtree from screen readers. This is done using React context in order to account for things\n * like portals, which can cause the React tree and the DOM tree to differ significantly in structure.\n */\nexport function ModalProvider(props: ModalProviderProps) {\n let {children} = props;\n let parent = useContext(Context);\n let [modalCount, setModalCount] = useState(0);\n let context = useMemo(() => ({\n parent,\n modalCount,\n addModal() {\n setModalCount(count => count + 1);\n if (parent) {\n parent.addModal();\n }\n },\n removeModal() {\n setModalCount(count => count - 1);\n if (parent) {\n parent.removeModal();\n }\n }\n }), [parent, modalCount]);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ModalProviderAria {\n /**\n * Props to be spread on the container element.\n */\n modalProviderProps: AriaAttributes\n}\n\n/**\n * Used to determine if the tree should be aria-hidden based on how many\n * modals are open.\n */\nexport function useModalProvider(): ModalProviderAria {\n let context = useContext(Context);\n return {\n modalProviderProps: {\n 'aria-hidden': context && context.modalCount > 0 ? true : undefined\n }\n };\n}\n\n/**\n * Creates a root node that will be aria-hidden if there are other modals open.\n */\nfunction OverlayContainerDOM(props: ModalProviderProps) {\n let {modalProviderProps} = useModalProvider();\n return
;\n}\n\n/**\n * An OverlayProvider acts as a container for the top-level application.\n * Any application that uses modal dialogs or other overlays should\n * be wrapped in a ``. This is used to ensure that\n * the main content of the application is hidden from screen readers\n * if a modal or other overlay is opened. Only the top-most modal or\n * overlay should be accessible at once.\n */\nexport function OverlayProvider(props: ModalProviderProps) {\n return (\n \n \n \n );\n}\n\nexport interface OverlayContainerProps extends ModalProviderProps {\n /**\n * The container element in which the overlay portal will be placed.\n * @default document.body\n */\n portalContainer?: Element\n}\n\n/**\n * A container for overlays like modals and popovers. Renders the overlay\n * into a Portal which is placed at the end of the document body.\n * Also ensures that the overlay is hidden from screen readers if a\n * nested modal is opened. Only the top-most modal or overlay should\n * be accessible at once.\n */\nexport function OverlayContainer(props: OverlayContainerProps): React.ReactPortal | null {\n let isSSR = useIsSSR();\n let {portalContainer = isSSR ? null : document.body, ...rest} = props;\n\n React.useEffect(() => {\n if (portalContainer?.closest('[data-overlay-container]')) {\n throw new Error('An OverlayContainer must not be inside another container. Please change the portalContainer prop.');\n }\n }, [portalContainer]);\n\n if (!portalContainer) {\n return null;\n }\n\n let contents = ;\n return ReactDOM.createPortal(contents, portalContainer);\n}\n\ninterface ModalAriaProps extends DOMAttributes {\n /** Data attribute marks the dom node as a modal for the aria-modal-polyfill. */\n 'data-ismodal': boolean\n}\n\nexport interface AriaModalOptions {\n isDisabled?: boolean\n}\n\nexport interface ModalAria {\n /** Props for the modal content element. */\n modalProps: ModalAriaProps\n}\n\n/**\n * Hides content outside the current `` from screen readers\n * on mount and restores it on unmount. Typically used by modal dialogs and\n * other types of overlays to ensure that only the top-most modal is\n * accessible at once.\n */\nexport function useModal(options?: AriaModalOptions): ModalAria {\n // Add aria-hidden to all parent providers on mount, and restore on unmount.\n let context = useContext(Context);\n if (!context) {\n throw new Error('Modal is not contained within a provider');\n }\n\n useEffect(() => {\n if (options?.isDisabled || !context || !context.parent) {\n return;\n }\n\n // The immediate context is from the provider containing this modal, so we only\n // want to trigger aria-hidden on its parents not on the modal provider itself.\n context.parent.addModal();\n return () => {\n if (context && context.parent) {\n context.parent.removeModal();\n }\n };\n }, [context, context.parent, options?.isDisabled]);\n\n return {\n modalProps: {\n 'data-ismodal': !options?.isDisabled\n }\n };\n}\n","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] &&\n key.startsWith(\"onDrag\"))) {\n filteredProps[key] =\n props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, useMemo } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { loadExternalIsValidProp } from '../../render/dom/utils/filter-props.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * `MotionConfig` is used to set configuration options for all children `motion` components.\n *\n * ```jsx\n * import { motion, MotionConfig } from \"framer-motion\"\n *\n * export function App() {\n * return (\n * \n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction MotionConfig({ children, isValidProp, ...config }) {\n isValidProp && loadExternalIsValidProp(isValidProp);\n /**\n * Inherit props from any parent MotionConfig components\n */\n config = { ...useContext(MotionConfigContext), ...config };\n /**\n * Don't allow isStatic to change between renders as it affects how many hooks\n * motion components fire.\n */\n config.isStatic = useConstant(() => config.isStatic);\n /**\n * Creating a new config context object will re-render every `motion` component\n * every time it renders. So we only want to create a new one sparingly.\n */\n const context = useMemo(() => config, [\n JSON.stringify(config.transition),\n config.transformPagePoint,\n config.reducedMotion,\n ]);\n return (jsx(MotionConfigContext.Provider, { value: context, children: children }));\n}\n\nexport { MotionConfig };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","\"use client\";\nimport {\n ProviderContext\n} from \"./chunk-Q66YAGZJ.mjs\";\n\n// src/provider.tsx\nimport { I18nProvider } from \"@react-aria/i18n\";\nimport { RouterProvider } from \"@react-aria/utils\";\nimport { OverlayProvider } from \"@react-aria/overlays\";\nimport { useMemo } from \"react\";\nimport { MotionConfig, MotionGlobalConfig } from \"framer-motion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NextUIProvider = ({\n children,\n navigate,\n disableAnimation,\n useHref,\n disableRipple = false,\n skipFramerMotionAnimations = disableAnimation,\n reducedMotion = \"never\",\n validationBehavior,\n locale = \"en-US\",\n defaultDates,\n createCalendar,\n ...otherProps\n}) => {\n let contents = children;\n if (navigate) {\n contents = /* @__PURE__ */ jsx(RouterProvider, { navigate, useHref, children: contents });\n }\n const context = useMemo(() => {\n if (disableAnimation && skipFramerMotionAnimations) {\n MotionGlobalConfig.skipAnimations = true;\n }\n return {\n createCalendar,\n defaultDates,\n disableAnimation,\n disableRipple,\n validationBehavior\n };\n }, [\n createCalendar,\n defaultDates == null ? void 0 : defaultDates.maxDate,\n defaultDates == null ? void 0 : defaultDates.minDate,\n disableAnimation,\n disableRipple,\n validationBehavior\n ]);\n return /* @__PURE__ */ jsx(ProviderContext, { value: context, children: /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(MotionConfig, { reducedMotion, children: /* @__PURE__ */ jsx(OverlayProvider, { ...otherProps, children: contents }) }) }) });\n};\n\nexport {\n NextUIProvider\n};\n","import { initializeFaro as coreInit } from '@grafana/faro-core';\nimport type { Faro } from '@grafana/faro-core';\n\nimport { makeCoreConfig } from './config';\nimport type { BrowserConfig } from './config';\n\nexport function initializeFaro(config: BrowserConfig): Faro {\n const coreConfig = makeCoreConfig(config);\n\n if (!coreConfig) {\n return undefined!;\n }\n\n return coreInit(coreConfig);\n}\n","import {\n createInternalLogger,\n defaultBatchingConfig,\n defaultGlobalObjectKey,\n defaultInternalLoggerLevel,\n defaultLogArgsSerializer,\n defaultUnpatchedConsole,\n isObject,\n} from '@grafana/faro-core';\nimport type { Config, MetaItem, Transport } from '@grafana/faro-core';\n\nimport { defaultEventDomain } from '../consts';\nimport { parseStacktrace } from '../instrumentations';\nimport { defaultSessionTrackingConfig } from '../instrumentations/session';\nimport { defaultMetas } from '../metas';\nimport { k6Meta } from '../metas/k6';\nimport { FetchTransport } from '../transports';\n\nimport { getWebInstrumentations } from './getWebInstrumentations';\nimport type { BrowserConfig } from './types';\n\nexport function makeCoreConfig(browserConfig: BrowserConfig): Config | undefined {\n const transports: Transport[] = [];\n\n const internalLogger = createInternalLogger(browserConfig.unpatchedConsole, browserConfig.internalLoggerLevel);\n\n if (browserConfig.transports) {\n if (browserConfig.url || browserConfig.apiKey) {\n internalLogger.error('if \"transports\" is defined, \"url\" and \"apiKey\" should not be defined');\n }\n\n transports.push(...browserConfig.transports);\n } else if (browserConfig.url) {\n transports.push(\n new FetchTransport({\n url: browserConfig.url,\n apiKey: browserConfig.apiKey,\n })\n );\n } else {\n internalLogger.error('either \"url\" or \"transports\" must be defined');\n }\n\n function createMetas(): MetaItem[] {\n const initialMetas = defaultMetas;\n\n if (browserConfig.metas) {\n initialMetas.push(...browserConfig.metas);\n }\n\n const isK6BrowserSession = isObject((window as any).k6);\n\n if (isK6BrowserSession) {\n return [...initialMetas, k6Meta];\n }\n\n return initialMetas;\n }\n\n const config: Config = {\n app: browserConfig.app,\n batching: {\n ...defaultBatchingConfig,\n ...browserConfig.batching,\n },\n dedupe: browserConfig.dedupe ?? true,\n globalObjectKey: browserConfig.globalObjectKey || defaultGlobalObjectKey,\n instrumentations: browserConfig.instrumentations ?? getWebInstrumentations(),\n internalLoggerLevel: browserConfig.internalLoggerLevel ?? defaultInternalLoggerLevel,\n isolate: browserConfig.isolate ?? false,\n logArgsSerializer: browserConfig.logArgsSerializer ?? defaultLogArgsSerializer,\n metas: createMetas(),\n parseStacktrace,\n paused: browserConfig.paused ?? false,\n preventGlobalExposure: browserConfig.preventGlobalExposure ?? false,\n transports,\n unpatchedConsole: browserConfig.unpatchedConsole ?? defaultUnpatchedConsole,\n\n beforeSend: browserConfig.beforeSend,\n eventDomain: browserConfig.eventDomain ?? defaultEventDomain,\n ignoreErrors: browserConfig.ignoreErrors,\n // ignore cloud collector urls by default. These are URLs ending with /collect or /collect/ followed by alphanumeric characters.\n ignoreUrls: (browserConfig.ignoreUrls ?? []).concat([/\\/collect(?:\\/[\\w]*)?$/]),\n\n sessionTracking: {\n ...defaultSessionTrackingConfig,\n ...browserConfig.sessionTracking,\n },\n\n user: browserConfig.user,\n view: browserConfig.view,\n trackResources: browserConfig.trackResources,\n trackWebVitalsAttribution: browserConfig.trackWebVitalsAttribution,\n consoleInstrumentation: browserConfig.consoleInstrumentation,\n };\n\n return config;\n}\n","export const defaultEventDomain = 'browser';\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { Provider } from 'react-redux';\nimport { store } from './app/store';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport './index.css';\nimport packageJson from \"../package.json\";\n/* import { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport {\n BatchSpanProcessor,\n TracerConfig,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';\nimport { Resource } from '@opentelemetry/resources';\n\nconst collectorOptions = {\n url: 'http://localhost:4318/v1/traces', // <-- nginx with reverse proxy to http://localhost:4318/\n};\n\nconst providerConfig: TracerConfig = {\n resource: new Resource({\n [SemanticResourceAttributes.SERVICE_NAME]: 'my-react-app',\n }),\n};\n\nconst provider = new WebTracerProvider(providerConfig);\n\nprovider.addSpanProcessor(\n new BatchSpanProcessor(new OTLPTraceExporter(collectorOptions)),\n);\n\nprovider.register({\n contextManager: new ZoneContextManager(),\n});\n\nregisterInstrumentations({\n instrumentations: [getWebAutoInstrumentations()],\n});\n\nconsole.log('OpenTelemetry initialized.'); */\n\nimport { matchRoutes } from 'react-router-dom';\nimport { initializeFaro, createReactRouterV6DataOptions, ReactIntegration, getWebInstrumentations, } from '@grafana/faro-react';\nimport { TracingInstrumentation } from '@grafana/faro-web-tracing';\nimport disableLogs from './disableLogs';\nimport { NextUIProvider } from '@nextui-org/react';\nimport { LanguageSelection } from './components/LanguageSelection';\n\ninitializeFaro({\n url: process.env.REACT_APP_GRAFANA_URL,\n app: {\n name: process.env.REACT_APP_GRAFANA_NAME,\n version: packageJson.version,\n environment: 'production'\n },\n\n instrumentations: [\n // Mandatory, omits default instrumentations otherwise.\n ...getWebInstrumentations(),\n\n // Tracing package to get end-to-end visibility for HTTP requests.\n new TracingInstrumentation(),\n\n // React integration for React applications.\n new ReactIntegration({\n router: createReactRouterV6DataOptions({\n matchRoutes,\n }),\n }),\n ],\n});\n\ndisableLogs();\n\n\nconst container = document.getElementById('root')!;\nconst root = createRoot(container);\n\nroot.render(\n \n \n \n \n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","import { BaseInstrumentation, VERSION } from '@grafana/faro-web-sdk';\n\nimport { setDependencies } from './dependencies';\nimport { initializeReactRouterInstrumentation } from './router';\nimport type { ReactIntegrationConfig } from './types';\n\nexport class ReactIntegration extends BaseInstrumentation {\n name = '@grafana/faro-react';\n version = VERSION;\n\n constructor(private options: ReactIntegrationConfig = {}) {\n super();\n }\n\n initialize(): void {\n setDependencies(this.internalLogger, this.api);\n initializeReactRouterInstrumentation(this.options);\n }\n}\n","import { internalLogger } from '../dependencies';\nimport type { ReactIntegrationConfig } from '../types';\n\nimport { ReactRouterVersion } from './types';\nimport { initializeReactRouterV4V5Instrumentation } from './v4v5';\nimport { initializeReactRouterV6DataRouterInstrumentation, initializeReactRouterV6Instrumentation } from './v6';\n\nexport function initializeReactRouterInstrumentation(options: ReactIntegrationConfig): void {\n const initMessage = 'Initializing React Router';\n\n switch (options.router?.version) {\n case ReactRouterVersion.V6:\n internalLogger.debug(`${initMessage} V6 instrumentation`);\n initializeReactRouterV6Instrumentation(options.router.dependencies);\n break;\n\n case ReactRouterVersion.V6_data_router:\n internalLogger.debug(`${initMessage} V6 data router instrumentation`);\n initializeReactRouterV6DataRouterInstrumentation(options.router.dependencies);\n break;\n\n case ReactRouterVersion.V5:\n case ReactRouterVersion.V4:\n internalLogger.debug(`${initMessage} ${options.router.version} instrumentation`);\n initializeReactRouterV4V5Instrumentation(options.router.dependencies);\n break;\n\n default:\n internalLogger.debug('Skipping initialization of React Router instrumentation');\n }\n}\n"],"names":["NoopContextManager","prototype","active","ROOT_CONTEXT","with","_context","fn","thisArg","args","_i","arguments","length","call","apply","__spreadArray","__read","bind","target","enable","this","disable","API_NAME","NOOP_CONTEXT_MANAGER","ContextAPI","getInstance","_instance","setGlobalContextManager","contextManager","registerGlobal","DiagAPI","instance","_getContextManager","context","_a","getGlobal","unregisterGlobal","DiagComponentLogger","props","_namespace","namespace","debug","logProxy","error","info","warn","verbose","funcName","logger","unshift","_logProxy","self","setLogger","optionsOrLogLevel","logLevel","DiagLogLevel","INFO","err","Error","stack","message","oldLogger","newLogger","maxLevel","_filterFunc","theLevel","theFunc","NONE","ALL","ERROR","WARN","DEBUG","VERBOSE","createLogLevelDiagLogger","_b","suppressOverrideMessage","_c","createComponentLogger","options","BaggageImpl","entries","_entries","Map","getEntry","key","entry","get","Object","assign","getAllEntries","Array","from","map","setEntry","newBaggage","set","removeEntry","delete","removeEntries","keys","keys_1","__values","keys_1_1","next","done","value","clear","baggageEntryMetadataSymbol","Symbol","diag","createBaggage","baggageEntryMetadataFromString","str","__TYPE__","toString","createContextKey","description","for","BaseContext","parentContext","_currentContext","getValue","setValue","deleteValue","_globalThis","globalThis","window","global","VERSION","re","isCompatible","ownVersion","acceptedVersions","Set","rejectedVersions","myVersionMatch","match","ownVersionParsed","globalVersion","_reject","v","add","_accept","has","globalVersionMatch","globalVersionParsed","_makeCompatibilityCheck","major","split","GLOBAL_OPENTELEMETRY_API_KEY","_global","type","allowOverride","api","version","NoopTextMapPropagator","inject","_carrier","extract","fields","defaultTextMapGetter","carrier","defaultTextMapSetter","BAGGAGE_KEY","getBaggage","undefined","getActiveBaggage","setBaggage","baggage","deleteBaggage","NOOP_TEXT_MAP_PROPAGATOR","PropagationAPI","setGlobalPropagator","propagator","setter","_getGlobalPropagator","getter","propagation","SPAN_KEY","getSpan","getActiveSpan","setSpan","span","deleteSpan","setSpanContext","spanContext","NonRecordingSpan","getSpanContext","contextApi","NoopTracer","startSpan","name","Boolean","root","parentFromContext","isSpanContextValid","startActiveSpan","arg2","arg3","arg4","opts","ctx","contextWithSpanSet","NOOP_TRACER","ProxyTracer","_provider","_getTracer","_name","_options","_fn","tracer","Reflect","_delegate","getDelegateTracer","NOOP_TRACER_PROVIDER","NoopTracerProvider","getTracer","_version","ProxyTracerProvider","getDelegate","setDelegate","delegate","trace","TraceAPI","_proxyTracerProvider","wrapSpanContext","setGlobalTracerProvider","provider","success","getTracerProvider","_spanContext","INVALID_SPAN_CONTEXT","setAttribute","_key","_value","setAttributes","_attributes","addEvent","addLink","_link","addLinks","_links","setStatus","_status","updateName","end","_endTime","isRecording","recordException","_exception","_time","SamplingDecision","INVALID_SPANID","INVALID_TRACEID","traceId","spanId","traceFlags","TraceFlags","VALID_TRACEID_REGEX","VALID_SPANID_REGEX","isValidTraceId","test","ExportResultCode","BAGGAGE_KEY_PAIR_SEPARATOR","BAGGAGE_PROPERTIES_SEPARATOR","BAGGAGE_ITEMS_SEPARATOR","BAGGAGE_HEADER","BAGGAGE_MAX_NAME_VALUE_PAIRS","BAGGAGE_MAX_PER_NAME_VALUE_PAIRS","BAGGAGE_MAX_TOTAL_LENGTH","W3CBaggagePropagator","isTracingSuppressed","keyPairs","getKeyPairs","filter","pair","slice","headerValue","serializeKeyPairs","baggageString","isArray","join","forEach","keyPair","parsePairKeyValue","baggageEntry","metadata","reduce","hValue","current","encodeURIComponent","valueProps","keyPairPart","shift","separatorIndex","indexOf","decodeURIComponent","substring","trim","parseKeyPairsIntoRecord","headers","sanitizeAttributes","attributes","out","_d","val","isAttributeKey","isAttributeValue","arr","arr_1","arr_1_1","element","isValidPrimitiveAttributeValue","isHomogeneousAttributeValueArray","delegateHandler","loggingErrorHandler","setGlobalErrorHandler","handler","globalErrorHandler","ex","JSON","stringify","result","getOwnPropertyNames","propertyName","String","getPrototypeOf","flattenException","stringifyException","NANOSECOND_DIGITS","MILLISECONDS_TO_NANOSECONDS","Math","pow","SECOND_TO_NANOSECONDS","millisToHrTime","epochMillis","epochSeconds","trunc","round","getTimeOrigin","timeOrigin","performance","perf","timing","fetchStart","hrTime","performanceNow","addHrTimes","now","timeInputToHrTime","time","isTimeInputHrTime","Date","getTime","TypeError","hrTimeDuration","startTime","endTime","seconds","nanos","hrTimeToTimeStamp","precision","tmp","repeat","nanoString","toISOString","replace","hrTimeToNanoseconds","hrTimeToMilliseconds","hrTimeToMicroseconds","isTimeInput","time1","time2","AnchoredClock","systemClock","monotonicClock","_monotonicClock","_epochMillis","_performanceMillis","delta","intValue","charCode","hexToBinary","hexStr","buf","Uint8Array","offset","i","hi","charCodeAt","lo","RandomIdGenerator","generateTraceId","getIdGenerator","generateSpanId","SHARED_CHAR_CODES_ARRAY","bytes","floor","random","fromCharCode","hexToBase64","btoa","RPCType","RPC_METADATA_KEY","setRPCMetadata","meta","deleteRPCMetadata","getRPCMetadata","AlwaysOffSampler","shouldSample","decision","NOT_RECORD","AlwaysOnSampler","RECORD_AND_SAMPLED","ParentBasedSampler","config","_root","_remoteParentSampled","remoteParentSampled","_remoteParentNotSampled","remoteParentNotSampled","_localParentSampled","localParentSampled","_localParentNotSampled","localParentNotSampled","spanName","spanKind","links","isRemote","SAMPLED","TraceIdRatioBasedSampler","_ratio","_normalize","_upperBound","_accumulate","ratio","isNaN","accumulation","pos","parseInt","TimeoutError","_super","_this","setPrototypeOf","__extends","callWithTimeout","promise","timeout","timeoutHandle","timeoutPromise","Promise","_resolve","reject","setTimeout","race","then","clearTimeout","reason","isWrapped","func","__original","__unwrap","__wrapped","baggageUtils","internal","_export","exporter","arg","resolve","suppressTracing","export","getEnv","globalEnv","parseEnvironment","DEFAULT_ENVIRONMENT","getEnvWithoutDefaults","otperformance","SDK_INFO","SEMRESATTRS_TELEMETRY_SDK_NAME","SEMRESATTRS_PROCESS_RUNTIME_NAME","SEMRESATTRS_TELEMETRY_SDK_LANGUAGE","TELEMETRYSDKLANGUAGEVALUES_WEBJS","SEMRESATTRS_TELEMETRY_SDK_VERSION","unrefTimer","_timer","CompositePropagator","_propagators","propagators","_fields","p","x","y","concat","constructor","VALID_KEY_CHAR_RANGE","VALID_KEY_REGEX","RegExp","VALID_VALUE_BASE_REGEX","INVALID_VALUE_COMMA_EQUAL_REGEX","TraceState","rawTraceState","_internalState","_parse","traceState","_clone","unset","serialize","_keys","agg","push","reverse","part","listMember","validateKey","validateValue","size","TRACE_PARENT_HEADER","TRACE_STATE_HEADER","TRACE_PARENT_REGEX","parseTraceParent","traceParent","exec","W3CTraceContextPropagator","Number","traceParentHeader","traceStateHeader","state","SUPPRESS_TRACING_KEY","unsuppressTracing","Deferred","_promise","defineProperty","BindOnceFuture","_callback","_that","_isCalled","_deferred","DEFAULT_LIST_SEPARATOR","ENVIRONMENT_BOOLEAN_KEYS","isEnvVarABoolean","ENVIRONMENT_NUMBERS_KEYS","isEnvVarANumber","ENVIRONMENT_LISTS_KEYS","isEnvVarAList","DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT","Infinity","DEFAULT_ATTRIBUTE_COUNT_LIMIT","DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_SDK_DISABLED","CONTAINER_NAME","ECS_CONTAINER_METADATA_URI_V4","ECS_CONTAINER_METADATA_URI","HOSTNAME","KUBERNETES_SERVICE_HOST","NAMESPACE","OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_EXPORTER_JAEGER_AGENT_HOST","OTEL_EXPORTER_JAEGER_AGENT_PORT","OTEL_EXPORTER_JAEGER_ENDPOINT","OTEL_EXPORTER_JAEGER_PASSWORD","OTEL_EXPORTER_JAEGER_USER","OTEL_EXPORTER_OTLP_ENDPOINT","OTEL_EXPORTER_OTLP_TRACES_ENDPOINT","OTEL_EXPORTER_OTLP_METRICS_ENDPOINT","OTEL_EXPORTER_OTLP_LOGS_ENDPOINT","OTEL_EXPORTER_OTLP_HEADERS","OTEL_EXPORTER_OTLP_TRACES_HEADERS","OTEL_EXPORTER_OTLP_METRICS_HEADERS","OTEL_EXPORTER_OTLP_LOGS_HEADERS","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_ZIPKIN_ENDPOINT","OTEL_LOG_LEVEL","OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_RESOURCE_ATTRIBUTES","OTEL_SERVICE_NAME","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_TRACES_EXPORTER","OTEL_TRACES_SAMPLER","TracesSamplerValues","ParentBasedAlwaysOn","OTEL_TRACES_SAMPLER_ARG","OTEL_LOGS_EXPORTER","OTEL_EXPORTER_OTLP_INSECURE","OTEL_EXPORTER_OTLP_TRACES_INSECURE","OTEL_EXPORTER_OTLP_METRICS_INSECURE","OTEL_EXPORTER_OTLP_LOGS_INSECURE","OTEL_EXPORTER_OTLP_CERTIFICATE","OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE","OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE","OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE","OTEL_EXPORTER_OTLP_COMPRESSION","OTEL_EXPORTER_OTLP_TRACES_COMPRESSION","OTEL_EXPORTER_OTLP_METRICS_COMPRESSION","OTEL_EXPORTER_OTLP_LOGS_COMPRESSION","OTEL_EXPORTER_OTLP_CLIENT_KEY","OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY","OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY","OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY","OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE","OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE","OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE","OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE","OTEL_EXPORTER_OTLP_PROTOCOL","OTEL_EXPORTER_OTLP_TRACES_PROTOCOL","OTEL_EXPORTER_OTLP_METRICS_PROTOCOL","OTEL_EXPORTER_OTLP_LOGS_PROTOCOL","OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE","OTEL_SEMCONV_STABILITY_OPT_IN","parseBoolean","environment","values","toLowerCase","parseNumber","min","max","parseStringList","output","input","separator","givenValue","logLevelMap","setLogLevelFromEnv","toUpperCase","env","transform","objectTag","nullTag","undefinedTag","funcToString","Function","objectCtorString","getPrototype","objectProto","hasOwnProperty","symToStringTag","toStringTag","nativeObjectToString","isPlainObject","isObjectLike","isOwn","tag","unmasked","e","getRawTag","objectToString","baseGetTag","proto","Ctor","MAX_LEVEL","merge","objects","WeakMap","mergeTwoObjects","takeValue","one","two","level","isPrimitive","isFunction","j","isObject","shouldMerge","twoValue","obj1","obj2","wasObjectReferenced","arr1","arr2","obj","urlMatches","url","urlToMatch","isUrlIgnored","ignoredUrls","ignoredUrls_1","ignoredUrls_1_1","toAttributes","toKeyValue","toAnyValue","t","stringValue","isInteger","doubleValue","boolValue","bytesValue","arrayValue","kvlistValue","_ref","k","exports","resource","droppedAttributesCount","scope","core_1","require","hrTimeToNanos","NANOSECONDS","BigInt","toLongBits","low","asUintN","high","encodeAsLongBits","encodeAsString","encodeTimestamp","identity","optionalHexToBinary","DEFAULT_ENCODER","encodeHrTime","encodeSpanContext","encodeOptionalSpanContext","useLongBits","useHex","ESpanKind","internal_1","utils_1","sdkSpanToOtlpSpan","encoder","status","parentSpanId","kind","startTimeUnixNano","endTimeUnixNano","events","event","toOtlpSpanEvent","droppedEventsCount","code","link","toOtlpLink","droppedLinksCount","timedEvent","timeUnixNano","spanRecordsToResourceSpans","readableSpans","resourceMap","record","ilmMap","instrumentationLibraryKey","instrumentationLibrary","schemaUrl","records","createResourceMap","entryIterator","scopeResourceSpans","ilmIterator","ilmEntry","scopeSpans","spans","readableSpan","createInstrumentationScope","transformedSpans","createResource","resourceSpans","getOtlpEncoder","createConstMap","res","len","lp","TMP_DEPLOYMENT_ENVIRONMENT","TMP_PROCESS_RUNTIME_NAME","TMP_SERVICE_NAME","TMP_TELEMETRY_SDK_NAME","TMP_TELEMETRY_SDK_LANGUAGE","TMP_TELEMETRY_SDK_VERSION","SEMRESATTRS_DEPLOYMENT_ENVIRONMENT","SEMRESATTRS_SERVICE_NAME","TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS","module","params","index","pending","base64","string","n","charAt","ceil","b64","s64","encode","buffer","start","parts","chunk","b","invalidEncoding","decode","c","codegen","functionParams","functionName","body","Codegen","formatStringOrScope","source","console","log","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","$0","$1","functionNameOverride","EventEmitter","_listeners","on","evt","off","listeners","splice","emit","fetch","asPromise","fs","inquire","filename","callback","xhr","readFile","contents","XMLHttpRequest","binary","onreadystatechange","readyState","response","responseText","overrideMimeType","responseType","open","send","factory","Float32Array","f32","f8b","le","writeFloat_f32_cpy","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloatLE","writeFloatBE","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","sign","exponent","LN2","readFloat_ieee754","readUint","uint","mantissa","NaN","writeUintLE","writeUintBE","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","moduleName","mod","eval","path","isAbsolute","normalize","absolute","prefix","originPath","includePath","alreadyNormalized","alloc","SIZE","MAX","slab","utf8","read","write","c1","c2","CryptoJS","C","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","d","xi","sx","x2","x4","x8","RCON","AES","extend","_doReset","_nRounds","_keyPriorReset","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","t0","t1","t2","t3","_createHelper","N","ORIG_P","ORIG_S","BLOWFISH_CTX","pbox","sbox","F","a","BlowFish_Encrypt","left","right","temp","Xl","Xr","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","Blowfish","blockSize","ivSize","Cipher","C_lib","Base","WordArray","BufferedBlockAlgorithm","C_enc","enc","Base64","Utf8","EvpKDF","cfg","createEncryptor","create","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","init","xformMode","_xformMode","reset","process","dataUpdate","_append","_process","finalize","_doFinalize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","block","_prevBlock","processBlock","thisBlock","Pkcs7","pad","data","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","formatter","OpenSSLFormatter","format","OpenSSL","salt","parse","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","OpenSSLKdf","kdf","execute","password","hasher","compute","derivedParams","crypto","msCrypto","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","subtype","overrides","$super","properties","clone","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","nBytes","hexChars","bite","hexStrLength","substr","Latin1","latin1Chars","latin1Str","latin1StrLength","escape","utf8Str","unescape","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","Hasher","update","messageUpdate","_createHmacHelper","HMAC","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","MD5","iterations","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","ArrayBuffer","superInit","subInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","byteOffset","byteLength","typedArrayByteLength","T","abs","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","hash","H_i","s","HmacMD5","CFB","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA256","PBKDF2","hmac","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","S","C_","G","RabbitLegacy","K","X","_X","_C","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","el","ar","br","cr","dr","er","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","z","HmacRIPEMD160","W","SHA1","HmacSHA1","SHA224","HmacSHA224","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","f","g","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","IS_BOT_REGEXP","DeviceUUID","defOptions","language","platform","os","pixelDepth","colorDepth","resolution","isAuthoritative","silkAccelerated","isKindleFire","isDesktop","isMobile","isTablet","isWindows","isLinux","isLinux64","isChromeOS","isMac","isiPad","isiPhone","isiPod","isAndroid","isSamsung","isSmartTV","isRaspberry","isBlackberry","isTouchScreen","isOpera","isIE","isEdge","isIECompatibilityMode","isSafari","isFirefox","isWebkit","isChrome","isKonqueror","isOmniWeb","isSeaMonkey","isFlock","isAmaya","isPhantomJS","isEpiphany","cpuCores","_Versions","Edge","Firefox","IE","Chrome","Chromium","Safari","Opera","Ps3","Psp","Amaya","SeaMonkey","OmniWeb","Flock","Epiphany","WinJs","PhantomJS","UC","_Browsers","Konqueror","PS3","PSP","_OS","Windows10","Windows81","Windows8","Windows7","UnknownWindows","WindowsVista","Windows2003","WindowsXP","Windows2000","WindowsPhone8","OSXCheetah","OSXPuma","OSXJaguar","OSXPanther","OSXTiger","OSXLeopard","OSXSnowLeopard","OSXLion","OSXMountainLion","OSXMavericks","OSXYosemite","OSXElCapitan","OSXSierra","Mac","Linux","Linux64","ChromeOS","Wii","iPad","iPhone","Bada","Curl","_Platform","Windows","WindowsPhone","Playstation","iPod","Android","Blackberry","Samsung","DefaultAgent","isBada","isBot","isCurl","isAndroidTablet","isWinJs","isSilk","isCaptive","isUC","browser","geoIp","hashInt","hashMD5","rotateLeft","lValue","iShiftBits","addUnsigned","lX","lY","lX4","lY4","lX8","lY8","lResult","gFF","ac","gF","gGG","gG","gHH","gH","gII","gI","wordToHex","lCount","wordToHexValue","wordToHexValueTemp","AA","BB","CC","DD","utftext","utf8Encode","lWordCount","lMessageLength","lNumberOfWordsTemp1","lNumberOfWords","lWordArray","lBytePosition","lByteCount","convertToWordArray","Agent","getBrowser","getBrowserVersion","$2","getOS","getPlatform","isWindowsPhone","isiSamsung","testCompatibilityMode","ua","tridentVersion","testSilk","SilkAccelerated","testKindleFire","testCaptiveNetwork","testMobile","testTablet","testNginxGeoIP","testBot","testSmartTV","testAndroidTablet","testTouchSupport","navigator","maxTouchPoints","msMaxTouchPoints","getLaguage","userLanguage","browserLanguage","systemLanguage","getColorDepth","screen","getScreenResolution","availWidth","availHeight","getPixelDepth","getCPU","hardwareConcurrency","userAgent","customData","du","dua","tmpUuid","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","hasOwnConstructor","hasIsPrototypeOf","setProperty","enumerable","configurable","newValue","writable","getProperty","src","copy","copyIsArray","deep","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertySymbols","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","style","lineno","column","updatePosition","lines","lastIndexOf","position","line","node","Position","whitespace","content","errorsList","msg","silent","m","comments","rules","comment","declaration","prop","ret","property","decl","decls","declarations","common","timeType","commonRe","json","nested","google","protobuf","Any","type_url","id","Duration","Timestamp","Empty","Struct","keyType","Value","oneofs","oneof","nullValue","numberValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","rule","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","FieldMask","paths","file","converter","Enum","util","genValuePartial_fromObject","gen","field","fieldIndex","defaultAlreadyEmitted","resolvedType","typeDefault","repeated","fullName","isUnsigned","genValuePartial_toObject","fromObject","mtype","fieldsArray","safeProp","toObject","sort","compareFieldsById","repeatedFields","mapFields","normalFields","partOf","valuesById","long","unsigned","toNumber","arrayDefault","hasKs2","_fieldsArray","group","ref","types","defaults","basic","packed","rfield","required","missing","wireType","mapKey","genTypePartial","optional","ReflectionObject","className","Namespace","valuesOptions","reserved","fromJSON","enm","toJSON","toJSONOptions","keepComments","isString","isReservedId","isReservedName","allow_alias","remove","Field","Type","ruleRe","defaultValue","Long","extensionField","declaringField","_packed","getOption","setOption","ifNotSet","resolved","parent","lookupTypeOrEnum","proto3_optional","fromNumber","freeze","newBuffer","emptyObject","emptyArray","ctor","fieldId","fieldType","fieldRule","decorateType","decorateEnum","fieldName","_configure","Type_","build","load","Root","loadSync","decoder","verifier","OneOf","MapField","Service","Method","Message","wrappers","configure","Writer","BufferWriter","Reader","BufferReader","rpc","roots","tokenize","resolvedKeyType","fieldKeyType","fieldValueType","$type","writer","encodeDelimited","reader","decodeDelimited","verify","object","requestType","requestStream","responseStream","parsedOptions","resolvedRequestType","resolvedResponseType","lookupType","arrayToJSON","array","_nestedArray","clearCache","addJSON","toArray","nestedArray","nestedJson","names","methods","getEnum","prev","setOptions","onAdd","onRemove","define","ptr","resolveAll","lookup","filterTypes","parentAlreadyChecked","found","lookupEnum","lookupService","Service_","Enum_","defineProperties","_handleAdd","_handleRemove","setParsedOption","propName","opt","find","newOpt","Root_","fieldNames","addFieldsToParent","oneofName","oneOfGetter","oneOfSetter","keepCase","base10Re","base10NegRe","base16Re","base16NegRe","base8Re","base8NegRe","numberRe","nameRe","typeRefRe","fqTypeRefRe","pkg","imports","weakImports","syntax","token","preferTrailingComment","tn","alternateCommentMode","peek","skip","cmnt","head","isProto3","applyCase","camelCase","illegal","insideTryCatch","readString","readValue","acceptTypeRef","parseFloat","readRanges","acceptStrings","parseId","dummy","ifBlock","parseOption","parseInlineOptions","acceptNegative","parsePackage","parseImport","whichImports","parseSyntax","parseCommon","parseType","parseEnum","service","commentText","method","parseMethod","parseService","reference","parseField","parseExtension","fnIf","fnElse","trailingLine","valueType","parseMapField","parseOneOf","extensions","endsWith","startsWith","lcFirst","ucFirst","parseGroup","parseEnumValue","isCustom","option","parseOptionValue","objectResult","lastValue","prevValue","simpleValue","LongBits","indexOutOfRange","writeLength","RangeError","create_array","Buffer","isBuffer","readLongVarint","bits","readFixed32_end","readFixed64","_slice","subarray","uint32","int32","sint32","bool","fixed32","sfixed32","float","double","nativeBuffer","skipType","BufferReader_","int64","uint64","sint64","zzDecode","fixed64","sfixed64","utf8Slice","deferred","files","SYNC","resolvePath","sync","finish","cb","getBundledFileName","idx","altname","parsed","queued","weak","readFileSync","isNode","exposeRe","tryHandleExtension","extendedType","sisterField","parse_","common_","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","request","endedByRPC","_methodsArray","inherited","methodsArray","rpcService","methodName","isReserved","q","delimRe","stringDoubleRe","stringSingleRe","setCommentRe","setCommentAltRe","setCommentSplitRe","whitespaceRe","unescapeRe","unescapeMap","lastCommentLine","stringDelim","subject","setComment","isLeading","lineEmpty","leading","commentOffset","text","isDoubleSlashCommentLine","startOffset","endOffset","findEndOfLine","lineText","cursor","lastIndex","curr","isDoc","isLeadingComment","expected","actual","_fieldsById","_oneofsArray","_ctor","fieldsById","oneofsArray","generateConstructor","ctorProperties","setup","wrapper","originalThis","fork","ldelim","typeName","bake","o","safePropBackslashRe","safePropQuoteRe","camelCaseRe","decorateRoot","decorateEnumIndex","dst","setProp","zero","zzEncode","zeroHash","fromString","toLong","fromHash","toHash","part0","part1","part2","newError","CustomError","captureStackTrace","pool","versions","isFinite","isset","isSet","utf8Write","_Buffer_from","_Buffer_allocUnsafe","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","ProtocolError","fieldMap","longs","enums","encoding","allocUnsafe","seenFirstField","invalid","genVerifyKey","genVerifyValue","oneofProp","Op","noop","State","tail","states","writeByte","VarintOp","writeVarint64","writeFixed32","_push","writeBytes","BufferWriter_","writeStringBuffer","writeBytesBuffer","aa","ca","da","ea","fa","ha","ia","document","createElement","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Na","Oa","prepareStackTrace","construct","l","includes","Pa","Qa","$$typeof","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","base","col","embed","img","keygen","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","location","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","color","date","datetime","email","month","number","range","search","tel","week","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","D","of","pf","qf","rf","sf","capture","passive","J","u","w","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","r","Ug","Vg","Wg","Xg","Yg","Zg","$g","_currentValue","childLanes","dependencies","firstContext","lanes","memoizedValue","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","lh","mh","eventTime","payload","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Li","Mi","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","cache","pendingSuspenseBoundaries","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","form","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","maxWait","trailing","cancel","flush","resetWarningCache","isRequired","bigint","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","__esModule","default","LazyLoadComponent","LazyLoadImage","trackWindowScroll","IntersectionObserverEntry","toPrimitive","__proto__","isIntersecting","onVisible","sham","Proxy","ReferenceError","supportsObserver","scrollPosition","useIntersectionObserver","threshold","observer","IntersectionObserver","rootMargin","placeholder","observe","updateVisibility","unobserve","getBoundingClientRect","getPropertyValue","bottom","getPlaceholderBoundingBox","innerHeight","innerWidth","isPlaceholderInViewport","cloneElement","getOwnPropertyDescriptors","Component","getComputedStyle","HTMLElement","_","scrollX","pageXOffset","scrollY","pageYOffset","onChangeScroll","delayMethod","delayedScroll","delayTime","baseComponentRef","createRef","addListeners","removeListeners","scrollElement","setState","propertyIsEnumerable","forwardRef","afterLoad","beforeLoad","visibleByDefault","visible","isScrollTracked","$","loaded","onLoad","effect","placeholderSrc","wrapperClassName","wrapperProps","onImageLoad","getImg","backgroundImage","backgroundSize","getLazyLoadImage","getWrappedLazyLoadImage","__self","__source","jsx","jsxs","forceUpdate","_result","Children","count","only","PureComponent","act","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","funktion","shimmer","wrap","nodule","original","wrapped","unwrap","massWrap","nodules","massUnwrap","styleObject","inline_style_parser_1","hasIterator","__importDefault","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","enumerize","str1","str2","lowerize","rgxMapper","arrays","matches","regex","strMapper","windowsVersionMap","regexes","cpu","device","engine","EDGE","UAParser","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","getDevice","_device","mobile","standalone","getEngine","_engine","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","parser","React","objectIs","checkIfSnapshotChanged","inst","latestGetSnapshot","nextValue","shim","subscribe","_useState","useSyncExternalStoreWithSelector","getServerSnapshot","selector","isEqual","instRef","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","_objectSpread","__symbol__","initZone","mark","performanceMeasure","label","ZoneImpl","assertZonePatched","patches","zone","_currentZoneFrame","currentTask","_currentTask","__load_patch","ignoreDuplicate","checkDuplicate","perfName","_api","_parent","zoneSpec","_properties","_zoneDelegate","_ZoneDelegate","getZoneWith","intercept","runGuarded","run","applyThis","applyArgs","invoke","handleError","runTask","task","NO_ZONE","zoneTask","isPeriodic","isRefreshable","notScheduled","eventTask","macroTask","reEntryGuard","running","_transitionTo","scheduled","previousTask","cancelFn","invokeTask","unknown","zoneDelegates","_zoneDelegates","_updateTaskCount","scheduleTask","newZone","_zone","scheduleMicroTask","customSchedule","ZoneTask","microTask","scheduleMacroTask","customCancel","scheduleEventTask","cancelTask","canceling","runCount","DELEGATE_ZS","onHasTask","hasTaskState","hasTask","onScheduleTask","onInvokeTask","onCancelTask","parentDelegate","_taskCounts","_parentDelegate","_forkZS","onFork","_forkDlgt","_forkCurrZone","_interceptZS","onIntercept","_interceptDlgt","_interceptCurrZone","_invokeZS","onInvoke","_invokeDlgt","_invokeCurrZone","_handleErrorZS","onHandleError","_handleErrorDlgt","_handleErrorCurrZone","_scheduleTaskZS","_scheduleTaskDlgt","_scheduleTaskCurrZone","_invokeTaskZS","_invokeTaskDlgt","_invokeTaskCurrZone","_cancelTaskZS","_cancelTaskDlgt","_cancelTaskCurrZone","_hasTaskZS","_hasTaskDlgt","_hasTaskDlgtOwner","_hasTaskCurrZone","zoneSpecHasTask","parentHasTask","targetZone","returnTask","scheduleFn","isEmpty","counts","change","useG","_numberOfNestedTaskFrames","drainMicroTaskQueue","cancelScheduleRequest","toState","fromState1","fromState2","handleId","symbolSetTimeout","symbolPromise","symbolThen","nativeMicroTaskQueuePromise","_microTaskQueue","_isDrainingMicrotaskQueue","nativeScheduleMicroTask","nativeThen","onUnhandledError","microtaskDrainDone","currentZoneFrame","showUncaughtError","patchEventTarget","patchOnProperties","patchMethod","bindArguments","patchThen","patchMacroTask","patchEventPrototype","isIEOrEdge","getGlobalObjects","ObjectDefineProperty","ObjectGetOwnPropertyDescriptor","ObjectCreate","ArraySlice","patchClass","wrapWithCurrentZone","filterProperties","attachOriginToPatched","_redefineProperty","patchCallbacks","ObjectGetPrototypeOf","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","Zone","scheduleMacroTaskWithCurrentZone","zoneSymbol","isWindowExists","internalWindow","isPropertyWritable","propertyDesc","isWebWorker","WorkerGlobalScope","isBrowser","isMix","zoneSymbolEventNames$1","enableBeforeunloadSymbol","wrapFn","eventNameSymbol","errorEvent","colno","patchProperty","desc","onPropPatchedSymbol","originalDescGet","originalDescSet","eventName","onProperties","originalInstanceKey","OriginalClass","patchFn","delegateName","patchDelegate","metaCreator","setNative","cbIdx","patched","isDetectedIEOrEdge","ieOrEdge","isNumber","passiveSupported","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames","globalSources","EVENT_NAME_SYMBOL_REGX","IMMEDIATE_PROPAGATION_SYMBOL","prepareEventNames","eventNameToString","falseEventName","trueEventName","symbolCapture","apis","patchOptions","ADD_EVENT_LISTENER","REMOVE_EVENT_LISTENER","rm","LISTENERS_EVENT_LISTENER","REMOVE_ALL_LISTENERS_EVENT_LISTENER","rmAll","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","PREPEND_EVENT_LISTENER","PREPEND_EVENT_LISTENER_SOURCE","isRemoved","handleEvent","originalDelegate","once","globalCallback","isCapture","tasks","errors","copyTasks","globalZoneAwareCallback","globalZoneAwareCaptureCallback","patchEventTargetMethods","useGlobalCallback","validateHandler","chkDup","returnTarget","rt","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","nativePrependEventListener","prepend","customSchedulePrepend","isExisting","symbolEventNames","symbolEventName","existingTasks","removeAbortListener","allRemoved","diff","typeOfDelegate","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","addSource","customScheduleFn","customCancelFn","transferEventName","isHandleEvent","newOptions","signal","copyEventListenerOptions","buildEventListenerOptions","aborted","constructorName","targetSource","onAbort","existingTask","findEventTasks","symbolCaptureEventName","captureTasks","removeTasks","evtName","results","foundTasks","captureFalseTasks","captureTrueTasks","Event","patchQueueMicrotask","taskSymbol","patchTimer","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","handleOrId","handle","refresh","clearTask","originalRefresh","_task","eventTargetPatch","eventNames","EVENT_TARGET","ignoreProperties","tip","ip","targetIgnoreProperties","op","patchFilteredProperties","getOnEventNames","propertyDescriptorPatch","patchTargets","ignoreErrorProperties","patchPromise","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","rejection","uncaughtPromiseError","throwOriginal","handleUnhandledRejection","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","isThenable","forwardResolution","forwardRejection","ZoneAwarePromise","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","RESOLVED","REJECTED","makeResolver","resolvePromise","wasCalled","wrappedFunction","TYPE_ERROR","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","clearRejectedNoCatch","scheduleResolveOrReject","readableObjectToString","REJECTION_HANDLED_HANDLER","chainPromise","onFulfilled","onRejected","promiseState","parentPromiseValue","isFinallyPromise","AggregateError","withResolvers","rej","promises","finished","onResolve","onReject","all","allWithCallback","allSettled","thenCallback","errorCallback","unresolvedCount","valueIndex","resolvedValues","curValueIndex","thenErr","executor","species","_this$constructor","finally","onFinally","_this$constructor2","NativePromise","symbolThenPatched","originalThen","zoneify","resultPromise","targetName","callbacks","nativeDelegate","_unused","Zone$1","_global$_Zone","loadZone","originalFunctionToString","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","nativePromise","nativeError","originalObjectToString","patchToString","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","patchUtil","patchCommon","legacyPatch","blockingMethods","patchEvent","XMLHttpRequestEventTarget","customElements","patchCustomElements","XMLHttpRequestPrototype","oriAddListener","oriRemoveListener","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","XHR_SCHEDULED","XHR_ERROR_BEFORE_SCHEDULED","XHR_LISTENER","newListener","DONE","loadTasks","oriInvoke","XHR_TASK","sendNative","placeholderCallback","abortNative","openNative","XHR_SYNC","XHR_URL","fetchTaskAborting","fetchTaskScheduling","patchXHR","geolocation","fnNames","patchPrototype","findPromiseRejectionHandler","PromiseRejectionEvent","patchBrowser","toPropertyKey","ownKeys","_typeof","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","definition","chunkId","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","onScriptComplete","onerror","onload","doneFns","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","batch","getBatch","ContextKey","gT","getContext","_gT$ContextKey","contextMap","realContext","ReactReduxContext","notInitialized","nullListeners","notify","createSubscription","store","parentSub","unsubscribe","subscriptionsAmount","selfSubscribed","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","first","isSubscribed","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","serverState","stabilityCheck","noopCheck","contextValue","getServerState","previousState","getState","Context","newBatch","nn","rn","isFrozen","en","revocable","revoke","proxy","initializeUseSelector","initializeConnect","deleteProperty","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","an","_defineProperty","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","_len","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","baseProto","createAction","prepareAction","actionCreator","prepared","__spreadValues","MiddlewareArray","EnhancerArray","freezeDraftable","isDraftable","createNextState","curryGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","actionCreatorCheck","isBoolean","thunkMiddleware","getDefaultMiddleware","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","fulfilled","requestId","__spreadProps","requestStatus","rejected","serializeError","rejectedWithValue","condition","AC","AbortController","class_1","onabort","throwIfAborted","abort","extra","abortReason","idGenerator","abortController","promise2","__async","conditionResult","sent","abortedPromise","getPendingMeta","rejectWithValue","fulfillWithValue","finalAction","err_1","dispatchConditionRejection","unwrapResult","withTypes","alm","createQueueWithTimer","requestAnimationFrame","enableES5","incrementAsync","async","amount","fetchCount","counterSlice","_reducer","initialState","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","_e","_f","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","caseReducer","isDraft2","isDraftable2","createNextState2","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","createSlice","increment","decrement","incrementByAmount","rootReducer","curriedGetDefaultMiddleware","devTools","_g","_h","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","compose2","defaultEnhancers","storeEnhancers","configureStore","millisecondsInWeek","millisecondsInMinute","millisecondsInHour","constructFromSymbol","constructFrom","toDate","argument","startOfDay","_date","in","setHours","parseISO","_options$additionalDi","invalidDate","additionalDigits","dateStrings","dateString","patterns","dateTimeDelimiter","timeString","timeZoneDelimiter","timezone","splitDateString","parseYearResult","captures","year","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","day","dayOfWeek","_year","validateWeekDate","isoWeekYear","setUTCFullYear","fourthOfJanuaryDay","getUTCDay","setUTCDate","getUTCDate","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseDate","timestamp","timeRegex","hours","parseTimeUnit","minutes","validateTime","parseTime","tmpDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","constructNow","normalizeDates","dates","isSameDay","laterDate","earlierDate","dateLeft_","dateRight_","isToday","addDays","setDate","getDate","subDays","isYesterday","isWithinInterval","interval","isSameMonth","laterDate_","earlierDate_","getFullYear","getMonth","isThisMonth","isSameYear","isThisYear","formatDistanceLocale","lessThanXSeconds","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","full","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","predicate","findIndex","pattern","findKey","valueCallback","rest","parsePattern","parseResult","enUS","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_baseDate","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","differenceInCalendarDays","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfYear","date_","getDayOfYear","startOfWeek","_ref3","_options$weekStartsOn","_options$locale","_defaultOptions$local","getDay","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","getISOWeek","getWeekYear","_options$firstWeekCon","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","padStart","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","dayPeriodEnum","formatters","unit","signedWeekYear","weekYear","isoWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","delimiter","absOffset","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isDate","isValid","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","_ref4","_options$locale2","_ref5","_ref6","_ref7","_options$locale3","_defaultOptions$local2","defaultLocale","originalDate","firstCharacter","longFormatter","isToken","cleanEscapedString","preprocessor","formatterOptions","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","_message","warnOrThrowProtectedError","matched","categorizeAndGroupData","startOfYesterday","startOfLastWeek","groups","item","createdAt","category","separateObjects","jsonStrings","jsonString","extractLastCompleteObject","metadataStart","bracketCount","objectStart","parseMetadata","unicornSourcesPromises","_imageResponse","_imageResponse$guid","imageResponse","isImage","featured_media","response1","guid","rendered","title","nameReJsx","emptyOptions","empty","Schema","normal","space","definitions","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","defined","powers","checks","DefinedInfo","super","check","own","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","alt","as","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","decoding","defer","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","hidden","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","lang","list","loading","loop","manifest","maxLength","media","minLength","muted","nonce","noModule","noValidate","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onChange","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","reversed","rows","rowSpan","sandbox","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","spellCheck","srcDoc","srcLang","srcSet","step","tabIndex","translate","typeMustMatch","useMap","writingSuggestions","align","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","dx","dy","edgeMode","editable","elevation","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","operator","orient","orientation","origin","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","valid","dash","cap","kebab","camelcase","hastToReact","StyleToObject","pointEnd","point","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ancestors","cause","ruleId","fatal","note","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","tree","filePath","development","jsxDEV","isStaticChildren","columnNumber","fileName","lineNumber","developmentCreate","productionCreate","components","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","schema","stylePropertyNameCase","tableCellAlignToStyle","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","thing","addNode","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","dashes","settings","padRight","padLeft","commas","styleToObject","replacer","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","identifiers","isIdentifierName","computed","toDash","urlAttributes","icon","includeImageAlt","includeHtml","items","parameters","chunkStart","SpliceBuffer","initial","setCursor","stop","POSITIVE_INFINITY","deleteCount","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","contentType","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","stream","previous","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","factorySpace","limit","enter","consume","exit","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","endOfFile","seen","nok","null","blankLine","partial","after","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","flowInitial","afterConstruct","resolver","createResolver","initializeFactory","resolveAllLineSuffixes","notText","atBreak","extraResolver","chunks","tabs","bufferIndex","_bufferIndex","_index","thematicBreak","marker","sequence","onBlank","notBlank","furtherBlankLines","initialBlankLine","notInCurrentItem","indentConstruct","initialSize","atMarker","inside","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","resolveTo","heading","paragraph","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","called","labelEnd","newEvents","close","_inactive","_balanced","insideSpan","labelStart","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","openingSequence","closingSequence","use","nextEvents","_close","_open","movePoint","attentionMarkers","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","between","resolveText","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","constructFactory","addResult","onsuccessfulcheck","accountForPotentialSkip","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","combineExtensions","defaultConstructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","hex","fromMarkdown","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","compile","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","expectingFirstListItemValue","flowCodeInside","depth","setextHeadingSlurpLineEnding","codePointAt","siblings","atHardBreak","inReference","referenceType","ancestor","decodeString","fragment","characterReferenceType","ordered","spread","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","preprocess","combined","remarkParse","doc","deserialize","serialized","deserializer","unpair","DataView","EMPTY","asString","shouldSkip","lossy","serializer","strict","structuredClone","normalizeUri","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","convert","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","CONTINUE","EXIT","visitParents","visitor","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","revert","suffix","listItemLoose","trimLines","trimLine","handlers","blockquote","patch","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","loose","listLoose","table","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","toml","ignore","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","nodes","trimMarkdownSpaceStart","toHast","footnoteById","defaultHandlers","passThrough","shallow","_objectWithoutProperties","_excluded","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","dataFootnoteBackref","tailTail","dataFootnotes","footer","remarkRehype","destination","hastTree","bail","trough","fns","pipeline","middlewareIndex","_len2","_key2","_len3","_key3","fnExpectsCallback","_len4","_key4","middelware","minpath","basename","extname","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","dirname","unmatchedSlash","startPart","startDot","preDotState","joined","segments","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","sep","minproc","cwd","isUrl","fileUrlOrPath","protocol","auth","urlToPath","URL","hostname","pathname","third","getPathFromURLPosix","VFile","isUint8Array","history","messages","stored","assertNonEmpty","assertPart","stem","fail","CallableInstance","Processor","Compiler","Parser","attachers","freezeIndex","frozen","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","parseTree","realDone","compileTree","compileResult","processSync","complete","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","asyncName","looksLikeAVFile","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","processor","deprecation","mdastTree","colon","questionMark","numberSign","AvatarStatus","AvatarState","ChatMode","canvas","backgroundColor","clearRect","fillStyle","fillRect","halfWidth","rounded","beginPath","roundRect","st","audioData","index2","isRecordingInProgress","isPausedRecording","picks","barWidth","mainBarColor","secondaryBarColor","animateCurrentPick","fullscreen","startY","barHeight","ct","at","bufferData","gap","lt","ft","_ref8","strokeLinecap","strokeLinejoin","_ref9","reflect","It","_ref10","audioRef","recordedBlob","duration","currentAudioTime","audioSrc","bufferFromRecordedBlob","togglePauseResume","startRecording","stopRecording","saveAudioFile","isAvailableRecordedAudio","isPausedRecordedAudio","isProcessingStartRecording","isProcessingRecordedAudio","isCleared","formattedDuration","formattedRecordingTime","formattedRecordedAudioCurrentTime","clearCanvas","setCurrentAudioTime","isProcessingOnResize","_setIsProcessingOnResize","_setIsProcessingAudioOnComplete","speed","isControlPanelShown","isDownloadAudioButtonShown","onlyRecording","isDefaultUIShown","defaultMicrophoneIconColor","defaultAudioWaveIconColor","mainContainerClassName","canvasContainerClassName","isProgressIndicatorShown","progressIndicatorClassName","isProgressIndicatorTimeShown","progressIndicatorTimeClassName","isProgressIndicatorOnHoverShown","progressIndicatorOnHoverClassName","isProgressIndicatorTimeOnHoverShown","progressIndicatorTimeOnHoverClassName","isAudioProcessingTextShown","audioProcessingTextClassName","controlButtonsClassName","dt","setResult","onMessageReceived","Worker","createObjectURL","Blob","terminate","mt","et","nt","vt","clientHeight","devicePixelRatio","clientWidth","getChannelData","barsData","it","offsetX","currentTime","Ge","wt","onStartRecording","onStopRecording","onPausedRecording","onResumedRecording","onClearCanvas","onEndAudioPlayback","onStartAudioPlayback","onPausedAudioPlayback","onResumedAudioPlayback","onErrorPlayingAudio","ht","ot","setInterval","clearInterval","arrayBuffer","AudioContext","decodeAudioData","getByteTimeDomainData","Audio","cancelAnimationFrame","getTracks","pause","recordingTime","mediaRecorder","mediaDevices","getUserMedia","audio","createAnalyser","frequencyBinCount","createMediaStreamSource","connect","MediaRecorder","paused","play","disconnect","ut","mimeType","click","revokeObjectURL","isPreloadedBlob","setPreloadedAudioBlob","DefaultContext","attr","IconContext","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","_extends","_toPrimitive","_toPropertyKey","Tree2Element","GenIcon","IconBase","elem","conf","svgProps","computedSize","AiFillCheckCircle","AiFillCloseCircle","_locking","_locks","isLocked","lock","assert","assertInt32","assertUInt32","assertFloat32","enumTypeSymbol","getEnumType","enumObject","setEnumType","makeEnumType","no","localName","_opt","numbers","normalValues","normalizeEnumValue","findName","findNumber","makeEnum","equals","getType","fromBinary","bin","makeReadOptions","readMessage","readerFactory","fromJson","jsonValue","fromJsonString","toBinary","makeWriteOptions","writerFactory","writeMessage","toJson","toJsonString","prettySpaces","emitDefaultValues","varint64read","lowBits","highBits","assertBounds","middleByte","varint64write","hasNext","byte","splitBits","hasMoreBits","TWO_PWR_32_DBL","int64FromString","dec","minus","add1e6digit","digit1e6","negate","newBits","uInt64ToString","toUnsigned","mid","digitA","digitB","digitC","decimalFrom1e7WithLeadingZeros","digit1e7","varint32write","varint32read","readBytes","protoInt64","dv","getBigInt64","getBigUint64","setBigInt64","setBigUint64","BUF_BIGINT_DISABLE","MIN","UMIN","UMAX","supported","uParse","getInt32","uEnc","setInt32","uDec","assertInt64String","assertUInt64String","negative","int64ToString","makeInt64Support","ScalarType","LongType","WireType","scalarEquals","BYTES","UINT64","FIXED64","INT64","SFIXED64","SINT64","scalarZeroValue","longType","BOOL","DOUBLE","FLOAT","STRING","isScalarZeroValue","BinaryWriter","textEncoder","TextEncoder","fieldNo","setFloat32","setFloat64","setUint32","BinaryReader","textDecoder","varint64","Varint","Bit64","Bit32","LengthDelimited","StartGroup","EndGroup","zze","getUint32","getFloat32","getFloat64","createExtensionContainer","container","ext","fieldWrapper","unwrapField","initExtensionField","encTable","decTable","protoBase64","es","bytePos","groupPos","getExtension","assertExtendee","ufs","unknownFields","filterUnknownFields","listUnknownFields","readField","setExtension","readOpt","writeOpt","hasExtension","discardUnknownFields","onUnknownField","writeField","messageType","extendee","isFieldSet","case","req","clearField","implicitPresence","isMessage","every","actualType","wrapField","INT32","UINT32","jsonReadDefaults","ignoreUnknownFields","jsonWriteDefaults","enumAsInteger","useProtoFieldName","makeReadOptions$1","makeWriteOptions$1","tokenNull","tokenIgnoredUnknownEnum","debugJsonValue","readField$1","parentType","targetArray","jsonItem","enumValue","readEnum","readScalar$1","targetMap","jsonMapKey","jsonMapValue","readMapKey","BIGINT","currentValue","scalarValue","nullAsZeroValue","NEGATIVE_INFINITY","FIXED32","SFIXED32","SINT32","uLong","canEmitFieldDefaultValue","writeField$1","jsonObj","entryKey","entryValue","writeScalar$1","enumType","writeEnum","jsonArr","unknownFieldsSymbol","readDefaults","readUnknownFields","writeDefaults","writeUnknownFields","scalarType","readScalar","readScalarLTString","readMessageField","mapVal","readMapEntry","delimited","scalarTypeInfo","writePacked","writeScalar","writeMessageField","writeMapEntry","keyValue","cloneSingularField","toU8Arr","InternalFieldList","normalizer","_normalizer","findJsonName","jsonName","jsonNames","byNumber","numbersAsc","byMember","members","localFieldName","protoName","inOneof","protoCamelCase","safeObjectProperty","safeMessageProperty","fieldJsonName","snakeCase","capNext","reservedObjectProperties","reservedMessageProperties","InternalOneofInfo","addField","findField","_lookup","proto3","newFieldList","fieldInfos","ooname","normalizeFieldInfos","initFields","member","oneofSeen","registry","typeRegistry","jsonKey","findExtension","findExtensionFor","lengthOrEndTagFieldNo","delimitedMessageEncoding","initPartial","sourceField","makeMessageType","makeExtension","ms","nanosStr","fromDate","MetricsBatch","TimeSeriesMetric","EventMetric","MetricSample","LogLevel","LoggerNames","loglevel","undefinedType","logMethods","_loggersByName","defaultLogger","bindMethod","traceForIE","replaceLoggingMethods","getLevel","methodFactory","levels","SILENT","enableLoggingWhenConsoleArrives","defaultMethodFactory","_level","_loggerName","realMethod","Logger","inheritedLevel","defaultLevel","userLevel","storageKey","getPersistedLevel","storedLevel","localStorage","cookie","cookieName","normalizeLevel","setLevel","levelNum","levelName","persistLevelIfPossible","setDefaultLevel","resetLevel","removeItem","clearPersistedLevel","enableAll","TRACE","disableAll","rebuild","childName","initialLevel","getLogger","_log","noConflict","getLoggers","livekitLogger","loglevelExports","workerLogger","maxRetryDelay","DEFAULT_RETRY_DELAYS_IN_MS","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","emitter","errorListener","removeListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","warned","warning","ProcessEmitWarning","fired","_onceWrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","logDisabled_","deprecationWarnings_","extractVersion","uastring","expr","wrapPeerConnectionEvent","eventNameToWrap","RTCPeerConnection","nativeEventName","wrappedCallback","modifiedEvent","_eventMap","unwrappedCb","disableLog","disableWarnings","deprecated","oldMethod","newMethod","compactObject","accumulator","isObj","isEmptyObject","walkStats","stats","resultSet","filterStats","outbound","streamStatsType","filteredResult","trackStats","trackIdentifier","trackStat","trackId","logging","shimGetUserMedia$2","browserDetails","constraintsToChrome_","mandatory","ideal","oldname_","mix","advanced","shimConstraints_","constraints","remap","video","facingMode","getSupportedFacingModeLies","getSupportedConstraints","enumerateDevices","devices","dev","deviceId","shimError_","PermissionDeniedError","PermissionDismissedError","InvalidStateError","DevicesNotFoundError","ConstraintNotSatisfiedError","TrackStartError","MediaDeviceFailedDueToShutdown","MediaDeviceKillSwitchOn","TabCaptureError","ScreenCaptureError","DeviceCaptureError","constraint","constraintName","onSuccess","webkitGetUserMedia","origGetUserMedia","cs","getAudioTracks","getVideoTracks","DOMException","shimMediaStream","MediaStream","webkitMediaStream","shimOnTrack$1","_ontrack","origSetRemoteDescription","setRemoteDescription","_ontrackpoly","getReceivers","transceiver","streams","shimGetSendersWithDtmf","shimSenderWithDtmf","dtmf","_dtmf","createDTMFSender","_pc","getSenders","_senders","origAddTrack","addTrack","sender","origRemoveTrack","removeTrack","origAddStream","addStream","origRemoveStream","removeStream","RTCRtpSender","origGetSenders","senders","shimSenderReceiverGetStats","RTCRtpReceiver","getStats","origGetReceivers","receivers","origGetStats","MediaStreamTrack","shimAddTrackRemoveTrackWithNative","getLocalStreams","_shimmedLocalStreams","streamId","alreadyExists","existingSenders","newSenders","newSender","shimAddTrackRemoveTrack","origGetLocalStreams","nativeStreams","_reverseStreams","_streams","newStream","replaceInternalStreamId","sdp","internalId","externalStream","internalStream","RTCSessionDescription","signalingState","oldStream","nativeMethod","methodObj","origSetLocalDescription","setLocalDescription","replaceExternalStreamId","origLocalDescription","streamid","shimPeerConnection$1","webkitRTCPeerConnection","RTCIceCandidate","fixNegotiationNeeded","getConfiguration","sdpSemantics","shimGetUserMedia$1","nativeGetUserMedia","getSettings","nativeGetSettings","applyConstraints","nativeApplyConstraints","shimOnTrack","RTCTrackEvent","shimPeerConnection","mozRTCPeerConnection","modernStatsTypes","inboundrtp","outboundrtp","candidatepair","localcandidate","remotecandidate","nativeGetStats","onSucc","onErr","stat","shimSenderGetStats","shimReceiverGetStats","shimRemoveStream","shimRTCDataChannel","DataChannel","RTCDataChannel","shimAddTransceiver","origAddTransceiver","addTransceiver","setParametersPromises","sendEncodings","shouldPerformCheck","encodingParam","rid","scaleResolutionDownBy","maxFramerate","getParameters","encodings","setParameters","shimGetParameters","origGetParameters","shimCreateOffer","origCreateOffer","createOffer","shimCreateAnswer","origCreateAnswer","createAnswer","preferredMediaSource","getDisplayMedia","mediaSource","shimLocalStreamsAPI","_localStreams","_addTrack","tracks","shimRemoteStreamsAPI","getRemoteStreams","_remoteStreams","_onaddstream","_onaddstreampoly","shimCallbacksAPI","addIceCandidate","successCallback","failureCallback","withCallback","candidate","shimGetUserMedia","_getUserMedia","shimConstraints","errcb","shimRTCIceServerUrls","OrigPeerConnection","pcConfig","pcConstraints","iceServers","newIceServers","server","urls","generateCertificate","shimTrackEventTransceiver","shimCreateOfferLegacy","offerOptions","offerToReceiveAudio","audioTransceiver","getTransceivers","setDirection","offerToReceiveVideo","videoTransceiver","shimAudioContext","webkitAudioContext","SDPUtils","localCName","generateIdentifier","splitLines","blob","splitSections","getDescription","sections","getMediaSections","matchPrefix","parseCandidate","foundation","address","port","relatedAddress","relatedPort","tcpType","ufrag","usernameFragment","writeCandidate","parseIceOptions","parseRtpMap","payloadType","clockRate","channels","numChannels","writeRtpMap","codec","pt","preferredPayloadType","parseExtmap","uri","writeExtmap","headerExtension","preferredId","parseFmtp","kv","writeFmtp","parseRtcpFb","parameter","writeRtcpFb","rtcpFeedback","parseSsrcMedia","sp","ssrc","parseSsrcGroup","semantics","ssrcs","getMid","mediaSection","parseFingerprint","getDtlsParameters","sessionpart","fingerprints","writeDtlsParameters","setupType","fp","parseCryptoLine","cryptoSuite","keyParams","sessionParams","writeCryptoLine","writeCryptoKeyParams","parseCryptoKeyParams","keyMethod","keySalt","lifeTime","mkiValue","mkiLength","getCryptoParameters","getIceParameters","pwd","writeIceParameters","iceLite","parseRtpParameters","codecs","headerExtensions","fecMechanisms","rtcp","mline","rtpmapline","fmtps","wildcardRtcpFb","existingFeedback","writeRtpDescription","caps","maxptime","parseRtpEncodingParameters","encodingParameters","hasRed","hasUlpfec","primarySsrc","secondarySsrc","flows","apt","encParam","codecPayloadType","rtx","fec","mechanism","maxBitrate","parseRtcpParameters","rtcpParameters","remoteSsrc","cname","rsize","reducedSize","compound","mux","writeRtcpParameters","parseMsid","spec","planB","msidParts","parseSctpDescription","parseMLine","maxSizeLine","maxMessageSize","sctpPort","fmt","sctpMapLines","writeSctpDescription","sctp","generateSessionId","writeSessionBoilerplate","sessId","sessVer","sessUser","sessionId","getDirection","getKind","isRejected","parseOLine","username","sessionVersion","netType","addressType","isValidSDP","shimRTCIceCandidate","NativeRTCIceCandidate","nativeCandidate","parsedCandidate","sdpMid","sdpMLineIndex","shimRTCIceCandidateRelayProtocol","relayProtocol","shimMaxMessageSize","_sctp","mLine","sctpInDescription","getRemoteFirefoxVersion","canSendMMS","remoteIsFirefox","canSendMaxMessageSize","getCanSendMaxMessageSize","remoteMMS","getMaxMessageSize","shimSendThrowTypeError","wrapDcSend","origDataChannelSend","origCreateDataChannel","createDataChannel","dataChannel","channel","shimConnectionState","completed","checking","iceConnectionState","_onconnectionstatechange","origMethod","_connectionstatechangepoly","_lastConnectionState","connectionState","newEvent","removeExtmapAllowMixed","nativeSRD","shimAddIceCandidateNullOrEmpty","nativeAddIceCandidate","shimParameterlessSetLocalDescription","nativeSetLocalDescription","shimChrome","shimFirefox","shimSafari","brands","chromium","brand","mozGetUserMedia","isSecureContext","supportsUnifiedPlan","RTCRtpTransceiver","detectBrowser","adapter","commonShim","chromeShim","browserShim","firefoxShim","safariShim","adapterFactory","E2EE_FLAG","KeyProviderEvent","KeyHandlerEvent","EncryptionEvent","CryptorEvent","isE2EESupported","createEncodedStreams","isScriptTransformSupported","RTCRtpScriptTransform","eventsExports","LivekitError","ConnectionErrorReason","MediaDeviceFailure","CryptorErrorReason","RoomEvent","ParticipantEvent","EngineEvent","TrackEvent","ConnectionError","DeviceUnsupportedError","TrackInvalidError","UnsupportedServer","UnexpectedConnectionState","NegotiationError","SignalRequestError","getFailure","NotFound","PermissionDenied","DeviceInUse","Other","isImmediate","commonVersionIdentifier","force","browsersList","describe","getMatch","osVersion","getOSVersion","exp","CriticalTimers","VideoPreset","widthOrOptions","frameRate","backupCodecs","videoCodecs","isBackupCodec","backup","AudioPresets","telephone","speech","music","musicStereo","musicHighQuality","musicHighQualityStereo","VideoPresets","h90","h180","h216","h360","h540","h720","h1080","h1440","h2160","VideoPresets43","h120","h240","h480","ScreenSharePresets","h360fps3","h360fps15","h720fps5","h720fps15","h720fps30","h1080fps15","h1080fps30","recycledElements","VideoQuality","Track","mediaTrack","loggerOptions","attachedElements","isMuted","streamState","StreamState","Active","isInBackground","_currentBitrate","appVisibilityChangedListener","backgroundTimeout","visibilityState","handleAppVisibilityChanged","loggerName","loggerContextCb","_mediaStreamTrack","_mediaStreamID","Source","Unknown","logContext","getLogContextFromTrack","currentBitrate","mediaStreamTrack","mediaStreamID","attach","Kind","Video","addAppVisibilityListener","parentElement","attachToElement","allMediaStreamTracks","srcObject","hasAudio","tr","AudioPlaybackStarted","VideoPlaybackStarted","AudioPlaybackFailed","VideoPlaybackFailed","ElementAttached","detach","detachTrack","recycleElement","ElementDetached","detached","elm","removeAppVisibilityListener","stopMonitor","enabled","monitorInterval","timeSyncHandle","updateLoggerOptions","HTMLAudioElement","shouldCache","isWeb","mediaStream","existingTracks","HTMLVideoElement","autoplay","isFireFox","mergeDefaultOptions","audioDefaults","videoDefaults","optionsWithoutProcessor","audioProcessor","videoProcessor","extractProcessorsFromOptions","clonedOptions","cloneDeep","mergeObjectWithoutOverwriting","mainObject","objectToMerge","constraintsForOptions","videoOptions","getNewAudioContext","latencyHint","sourceToKind","Microphone","Camera","screenCaptureToDisplayMediaStreamOptions","videoConstraints","controller","selfBrowserSurface","surfaceSwitching","systemAudio","preferCurrentTab","mimeTypeToVideoCodecString","getTrackPublicationInfo","infos","TrackPublishedResponse","cid","trackInfo","trackID","sid","streamID","streamTrackID","trackSid","isEnabled","trackName","encrypted","isEncrypted","StreamState$1","kindToProto","TrackType","AUDIO","VIDEO","DATA","kindFromProto","sourceToProto","TrackSource","CAMERA","MICROPHONE","ScreenShare","SCREEN_SHARE","ScreenShareAudio","SCREEN_SHARE_AUDIO","UNKNOWN","sourceFromProto","streamStateFromProto","ACTIVE","PAUSED","Paused","ddExtensionURI","sleep","supportsTransceiver","supportsAddTrack","isSVCCodec","supportsSetSinkId","isSafari17","isReactNative","product","isCloud","serverUrl","getLKReactNativeInfo","LiveKitReactNativeGlobal","getReactNativeOs","getDevicePixelRatio","compareVersions","v1","v2","parts1","parts2","p1","p2","roDispatchCallback","handleResize","ioDispatchCallback","handleVisibilityChanged","resizeObserver","getResizeObserver","ResizeObserver","intersectionObserver","getIntersectionObserver","emptyAudioStreamTrack","createDummyVideoStreamTrack","paintContent","arc","PI","closePath","dummyStream","captureStream","dummyTrack","getEmptyAudioStreamTrack","oscillator","createOscillator","gain","createGain","setValueAtTime","createMediaStreamDestination","Future","futureBase","__awaiter","unwrapConstraint","toHttpUrl","getDisconnectReasonFromConnectionError","LeaveRequest","Cancelled","DisconnectReason","CLIENT_INITIATED","NotAllowed","USER_REJECTED","ServerUnreachable","JOIN_FAILURE","UNKNOWN_REASON","defaultId","DeviceManager","_previousDevices","previousDevices","getDevices","kind_1","requestPermissions","userMediaPromiseMap","hasDeviceInUse","isDummyDeviceOrEmpty","noLabel","isRelevant","permissionsToAcquire","normalizeDeviceId","groupId","defaultDevice","mediaDeviceKinds","LocalTrack","_sender","_constraints","userProvidedTrack","manuallyStopped","_isUpstreamPaused","handleTrackMuteEvent","debouncedTrackMuteHandler","pauseUpstream","handleTrackUnmuteEvent","resumeUpstream","handleEnded","reacquireTrack","Ended","providedByUser","muteLock","pauseUpstreamLock","processorLock","restartLock","setMediaStreamTrack","getConstraints","dimensions","isUpstreamPaused","isUserProvided","processedTrack","getSourceTrackSettings","newTrack","unlock","processorElement","replaceTrack","waitForDimensions","started","dims","setDeviceId","restartTrack","getDeviceId","_this2","mute","setTrackMuted","unmute","userProvidedOrOptions","stopProcessor","streamConstraints","Restarted","Muted","Unmuted","needsReAcquisition","UpstreamPaused","UpstreamResumed","getRTCStatsReport","setProcessor","processor_1","_this3","showProcessedStreamLocally","processorOptions","audioContext","TrackProcessorUpdate","getProcessor","_this4","keepElement","E2EEManager","onWorkerMessage","ev","EncryptionError","keyProvider","getKeys","keyInfo","postKey","encryptionEnabled","participantIdentity","room","localParticipant","ParticipantEncryptionStatusChanged","participant","getParticipantByIdentity","KeyRatcheted","material","onWorkerError","worker","setupEventListeners","keyProviderOptions","getOptions","setParticipantCryptorEnabled","postEnable","setSifTrailer","trailer","postSifTrailer","setupEngine","RTPVideoMapUpdate","rtpMap","postRTPMap","TrackPublished","pub","encryption","Encryption_Type","ConnectionStateChanged","ConnectionState","Connected","remoteParticipants","trackPublications","TrackUnsubscribed","TrackSubscribed","setupE2EEReceiver","SignalConnected","isE2EEEnabled","LocalTrackPublished","publication","setupE2EESender","SetKey","RatchetRequest","participantId","postRatchetRequest","isPublisher","enableMsg","remoteId","handleReceiver","handleSender","writableStream","readable","readableStream","receiverStreams","senderStreams","QueueTaskStatus","AsyncQueue","pendingTasks","taskMutex","nextTaskIndex","taskInfo","enqueuedAt","WAITING","executedAt","RUNNING","COMPLETED","snapshot","passThroughQueueSignals","SignalConnectionState","SignalClient","isDisconnected","DISCONNECTING","DISCONNECTED","isEstablishingConnection","CONNECTING","RECONNECTING","getNextRequestId","_requestId","useJSON","rtt","resetCallbacks","onAnswer","onLeave","onLocalTrackPublished","onLocalTrackUnpublished","onNegotiateRequested","onOffer","onRemoteMuteChanged","onSubscribedQualityUpdate","onTokenRefresh","onTrickle","Signal","requestQueue","queuedRequests","closingLock","connectionLock","abortSignal","reconnect","clearPingInterval","reconnectReason","connectOptions","toWebsocketUrl","clientInfo","ClientInfo","sdk","ClientInfo_SDK","JS","getClientInfo","URLSearchParams","autoSubscribe","deviceModel","browserVersion","adaptiveStream","connection","createConnectionParams","abortHandler","wsTimeout","websocketTimeout","ws","WebSocket","binaryType","onopen","CONNECTED","handleWSError","resp","toFixed","InternalError","SignalResponse","shouldProcessMessage","pingTimeoutDuration","pingTimeout","pingIntervalDuration","pingInterval","startPingInterval","signalLatency","handleSignalResponse","onclose","wasClean","handleOnClose","updateState","closePromise","CLOSING","sendOffer","offer","offerSdp","sendRequest","toProtoSessionDescription","sendAnswer","answer","answerSdp","sendIceCandidate","TrickleRequest","candidateInit","sendMuteTrack","MuteTrackRequest","sendAddTrack","sendUpdateLocalMetadata","metadata_1","name_1","UpdateParticipantMetadata","sendUpdateTrackSettings","sendUpdateSubscription","sub","sendSyncState","sendUpdateVideoLayers","layers","UpdateVideoLayers","sendUpdateSubscriptionPermissions","allParticipants","trackPermissions","SubscriptionPermission","sendSimulateScenario","scenario","sendPing","Ping","sendUpdateLocalAudioTrack","features","UpdateLocalAudioTrack","sendLeave","LeaveRequest_Action","DISCONNECT","message_1","fromQueue","canQueue","canPass","canPassThroughQueue","OPEN","SignalRequest","pingHandled","fromProtoSessionDescription","onParticipantUpdate","participants","onSpeakersChanged","speakers","onRoomUpdate","onConnectionQuality","onStreamStateUpdate","onSubscriptionPermissionUpdate","onSubscriptionError","lastPingTimestamp","resetPingTimeout","onRequestResponse","onLocalTrackSubscribed","msgCase","setReconnected","onCloseCallback","clearPingTimeout","toUTCString","rsd","SessionDescription","grammar$1","grammar","reg","rate","sessionConfig","raddr","tcptype","generation","dir2","clksrcExt","mediaClockValue","rateNumerator","rateDenominator","toIntIfInt","parseReg","needsBlank","keyLocation","rawName","attachProperties","requireGrammar","validLine","session","rtp","fmtp","paramReducer","acc","parseParams","parseFmtpConfig","parsePayloads","parseRemoteCandidates","candidates","parseImageAttributes","parseSimulcastStreamList","scid","formatRegExp","makeLine","defaultOuterOrder","defaultInnerOrder","payloads","outerOrder","innerOrder","requireParser","requireWriter","PCEvents","PCTransport","createPC","ddExtID","pendingCandidates","restartingIce","renegotiate","trackBitrates","remoteStereoMids","remoteNackMids","negotiate","createAndSendOffer","onconnectionstatechange","oniceconnectionstatechange","onicegatheringstatechange","ondatachannel","onnegotiationneeded","onsignalingstatechange","onicecandidate","ontrack","onIceCandidate","onicecandidateerror","onIceCandidateError","onIceConnectionStateChange","onSignalingStatechange","onConnectionStateChange","onDataChannel","onTrack","isICEConnected","remoteDescription","mungedSDP","stereoMids","nackMids","sdpParsed","libExports","opusPayload","rtcpFb","extractStereoAndNackAudioFromOffer","trackbr","codecPayload","fmtpFound","maxbr","setMungedSDP","iceRestart","currentSD","ensureIPAddrMatchVersion","ensureAudioNackAndStereo","msid","ensureVideoDDExtensionForSVC","startBitrate","createAndSetAnswer","dataChannelDict","transceiverInit","setTrackCodecBitrate","setConfiguration","rtcConfig","canRemoveTrack","getConnectionState","getICEConnectionState","getSignallingState","getLocalDescription","localDescription","getRemoteDescription","getConnectedAddress","selectedCandidatePairId","candidatePairs","selectedID","remoteCandidateId","munged","remote","originalSdp","remoteSdp","maxID","isV6","defaultVideoCodec","publishDefaults","audioPreset","dtx","red","forceStereo","simulcast","screenShareEncoding","stopMicTrackOnMute","videoCodec","backupCodec","autoGainControl","echoCancellation","noiseSuppression","voiceIsolation","roomOptionDefaults","dynacast","stopLocalTrackOnUnpublish","reconnectPolicy","retryDelays","_retryDelays","nextRetryDelayInMs","retryCount","retryDelay","disconnectOnPageLeave","webAudioMix","roomConnectOptionDefaults","maxRetries","peerConnectionTimeout","PCTransportState","PCTransportManager","needsPublisher","isPublisherConnectionRequired","needsSubscriber","isSubscriberConnectionRequired","subscriberPrimary","connectionStates","requiredTransports","FAILED","CLOSED","NEW","publisher","subscriber","PCManager","SignalTarget","PUBLISHER","SUBSCRIBER","onPublisherOffer","remoteOfferLock","requirePublisher","requireSubscriber","createAndSendPublisherOffer","setPublisherAnswer","triggerIceRestart","createSubscriberAnswerFromOffer","RTCSdpType","updateConfiguration","ensurePCTransportConnection","transport","ensureTransportConnected","negotiationTimeout","addPublisherTransceiver","addPublisherTrack","createPublisherDataChannel","transports","pcTransport_1","abortController_1","pcTransport","connectTimeout","monitorFrequency","computeBitrate","currentStats","prevStats","bytesNow","bytesPrev","bytesReceived","bytesSent","LocalAudioTrack","enhancedNoiseCancellation","isKrispNoiseFilterEnabled","stopOnMute","monitorSender","getSenderStats","handleKrispNoiseFilterEnable","AudioTrackFeatureUpdate","AudioTrackFeature","TF_ENHANCED_NOISE_CANCELLATION","handleKrispNoiseFilterDisable","checkForSilence","deviceHasChanged","startMonitor","setAudioContext","audioStats","packetsSent","packetsLost","roundTripTime","jitter","trackIsSilent","track_1","timeOffset","analyser","fftSize","bufferLength","dataArray","someNoise","sample","detectSilence","AudioSilenceDetected","mediaTrackToLocalTrack","LocalVideoTrack","presets169","presets43","presetsScreenShare","defaultSimulcastPresets169","defaultSimulcastPresets43","videoRids","computeVideoEncodings","isScreenShare","videoEncoding","useSimulcast","scalabilityMode","presets","aspect","presetsForResolution","preset","determineAppropriateEncoding","sourceFramerate","sm","ScalabilityMode","spatial","bitratesRatio","networkPriority","midPreset","sortPresets","screenShareSimulcastLayers","defaultSimulcastLayers","videoSimulcastLayers","lowPreset","encodingsFromPresets","fps","fromPreset","canSetPriority","topFramerate","notifyOnce","aEnc","bEnc","temporal","degradationPreference","setDegradationPreference","simulcastCodecs","statsMap","totalBitrate","senderLock","isSimulcast","signalClient","__asyncValues","vs","frameHeight","frameWidth","framesPerSecond","framesSent","firCount","pliCount","nackCount","qualityLimitationReason","qualityLimitationDurations","qualityLimitationResolutionChanges","retransmittedPacketsSent","targetBitrate","setPublishingQuality","maxQuality","qualities","LOW","HIGH","SubscribedQuality","quality","setPublishingLayers","preference","addSimulcastTrack","simulcastCodecInfo","setSimulcastTrackSender","subscribedCodecs","setPublishingCodecs","currentCodec","newCodecs","codecs_1","codecs_1_1","setPublishingLayersForSender","senderEncodings","videoQualityForRid","subscribedQuality","maxFrameRate","MEDIUM","videoLayersFromEncodings","svc","VideoLayer","bitrate","encodingSM","resRatio","lossyDataChannel","reliableDataChannel","leaveReconnect","PCState","RTCEngine","isClosed","_isClosed","pendingReconnect","reconnectTimeout","fullReconnectOnNext","pcState","New","pendingTrackResolvers","reconnectAttempts","reconnectStart","attemptingReconnect","joinAttempts","maxJoinAttempts","shouldFailNext","handleDataChannel","reliableDCSub","lossyDCSub","handleDataMessage","dataProcessLock","dp","DataPacket","ActiveSpeakersUpdate","newObj","oldObj","destinationIdentities","applyUserDataCompat","DataPacketReceived","handleDataError","channelKind","maxRetransmits","ErrorEvent","handleBufferedAmountLow","DataPacket_Kind","LOSSY","RELIABLE","updateAndEmitDCBufferStatus","handleDisconnect","disconnectReason","Disconnected","getNextRetryDelay","elapsedMs","clearReconnectTimeout","regionUrlProvider","updateToken","attemptReconnect","waitForRestarted","onRestarted","onDisconnected","isBufferStatusLow","dcBufferStatus","DCBufferStatusChanged","dataChannelForKind","bufferedAmount","bufferedAmountLowThreshold","handleBrowserOnLine","client","ReconnectReason","RR_SIGNAL_DISCONNECTED","Engine","expSignalLatency","registerOnLineListener","updates","ParticipantUpdate","ConnectionQualityUpdate","RoomUpdate","SubscriptionError","SubscriptionPermissionUpdate","SpeakersChanged","StreamStateChanged","SignalRequestResponse","latestJoinResponse","roomID","pID","signalOpts","setupSignalClientCallbacks","joinResponse","pcManager","fastPublish","clientConfiguration","Closing","deregisterOnLineListener","clearPendingReconnect","cleanupPeerConnections","cleanupClient","dcCleanup","onbufferedamountlow","onclosing","lossyDC","reliableDC","publicationTimeout","updateMuteStatus","dataSubscriberReadyState","getConnectedServerAddress","setRegionUrlProvider","participantSid","makeRTCConfiguration","TransportsCreated","publisherState","subscriberState","publisherConnectionPromise","shouldEmit","RR_SUBSCRIBER_FAILED","RR_PUBLISHER_FAILED","isSignalSevered","isPCSevered","Offline","MediaTrackAdded","serverInfo","createDataChannels","LocalTrackUnpublished","LocalTrackSubscribed","RemoteMute","SubscribedQualityUpdate","leave","regions","setServerReportedRegions","RECONNECT","RESUME","serverResponse","e2eeEnabled","encodedInsertableStreams","rtcIceServers","iceServer","rtcIceServer","credential","forceRelay","ClientConfigSetting","ENABLED","iceTransportPolicy","continualGatheringPolicy","createSender","createTransceiverRTCRtpSender","createRTCRtpSender","createSimulcastSender","simulcastTrack","createSimulcastTransceiverSender","resumeConnection","DISABLED","restartConnection","recoverable","SignalReconnectError","RR_UNKNOWN","regionUrl","Restarting","SignalRestarted","waitForPCReconnected","resetAttempts","nextRegionUrl","getNextBestRegionUrl","Resuming","SignalResumed","Resumed","waitForPCInitialConnection","Reconnecting","sendDataPacket","packet","ensurePublisherConnected","ensureDataTransportConnected","transportName","needNegotiation","targetChannel","verifyTransport","handleClosed","rtpTypes","maybeCodec","remoteTracks","localTracks","previousAnswer","previousOffer","trackSids","trackSidsDisabled","isDesired","SyncState","UpdateSubscription","participantTracks","publishTracks","dataChannels","dataChannelsInfo","failNext","getInfo","DataChannelInfo","RegionUrlProvider","lastUpdateAt","settingsCacheTime","attemptedRegions","getServerUrl","regionSettings","fetchRegionSettings","regionsLeft","region","attempted","nextRegion","regionSettingsResponse","host","authorization","statusText","RpcError","truncateBytes","MAX_MESSAGE_BYTES","MAX_DATA_BYTES","fromProto","toProto","RpcError$1","builtIn","ErrorCode","ErrorMessage","APPLICATION_ERROR","CONNECTION_TIMEOUT","RESPONSE_TIMEOUT","RECIPIENT_DISCONNECTED","RESPONSE_PAYLOAD_TOO_LARGE","SEND_FAILED","UNSUPPORTED_METHOD","RECIPIENT_NOT_FOUND","REQUEST_PAYLOAD_TOO_LARGE","UNSUPPORTED_SERVER","UNSUPPORTED_VERSION","maxBytes","RemoteTrack","setMuted","setMediaStream","onRemoveTrack","playoutDelayHint","setPlayoutDelay","delayInSeconds","getPlayoutDelay","monitorReceiver","registerTimeSyncUpdate","sources","getSynchronizationSources","rtpTimestamp","TimeSyncUpdate","RemoteAudioTrack","audioOutput","getReceiverStats","webAudioPluginNodes","sinkId","setVolume","volume","gainNode","setTargetAtTime","_setVolume","elementVolume","getVolume","highestVolume","setSinkId","needsNewWebAudioConnection","connectWebAudio","disconnectWebAudio","setWebAudioPlugins","sourceNode","lastNode","receiverStats","concealedSamples","concealmentEvents","silentConcealedSamples","silentConcealmentEvents","totalAudioEnergy","totalSamplesDuration","RemoteVideoTrack","adaptiveStreamSettings","elementInfos","debouncedHandleResize","updateDimensions","isAdaptiveStream","elementInfo","HTMLElementInfo","observeElementInfo","stopObservingElementInfo","stopElementInfos","stopObserving","detachedElements","stopObservingElement","getDecoderImplementation","decoderImplementation","codecID","codecId","framesDecoded","framesDropped","framesReceived","packetsReceived","lastVisibilityChange","visibilityChangedAt","backgroundPause","pauseVideoInBackground","isPiPMode","pictureInPicture","isVisible","lastVisible","VisibilityChanged","maxWidth","maxHeight","pixelDensity","getPixelDensity","currentElementWidth","currentElementHeight","lastDimensions","VideoDimensionsChanged","isPiP","onVisibilityChanged","isElementInPiP","onEnterPiP","documentPictureInPicture","onLeavePiP","isElementInViewport","pictureInPictureElement","win","viewportWindow","offsetTop","offsetLeft","offsetWidth","offsetHeight","offsetParent","TrackPublication","metadataMuted","handleMuted","handleUnmuted","Publication","setTrack","audioTrack","videoTrack","updateInfo","simulcasted","SubscriptionStatus","PermissionStatus","LocalTrackPublication","handleTrackEnded","getTrackFeatures","TF_AUTO_GAIN_CONTROL","TF_ECHO_CANCELLATION","TF_NOISE_SUPPRESSION","channelCount","TF_STEREO","TF_NO_DTX","ConnectionQuality","Participant","isAgent","permissions","agent","ParticipantInfo_Kind","AGENT","_kind","STANDARD","audioLevel","isSpeaking","_connectionQuality","audioTrackPublications","videoTrackPublications","getTrackPublications","getTrackPublication","getTrackPublicationByName","connectionQuality","isCameraEnabled","isMicrophoneEnabled","isScreenShareEnabled","isLocal","joinedAt","participantInfo","_setName","_setMetadata","_setAttributes","permission","setPermissions","changed","prevMetadata","ParticipantMetadataChanged","ParticipantNameChanged","oldValues","newValues","allKeys","diffAttributes","AttributesChanged","prevPermissions","canPublish","canSubscribe","canPublishData","recorder","canPublishSources","canSubscribeMetrics","ParticipantPermissionsChanged","setIsSpeaking","speaking","lastSpokeAt","IsSpeakingChanged","setConnectionQuality","prevQuality","ConnectionQuality$1","EXCELLENT","Excellent","GOOD","Good","POOR","Poor","LOST","Lost","qualityFromProto","ConnectionQualityChanged","addTrackPublication","TrackMuted","TrackUnmuted","LocalParticipant","pendingPublishing","pendingPublishPromises","participantTrackPermissions","allParticipantsAllowedToSubscribe","encryptionType","enabledPublishVideoCodecs","rpcHandlers","pendingAcks","pendingResponses","handleReconnecting","reconnectFuture","handleReconnected","updateTrackSubscriptionPermissions","handleDisconnected","handleSignalRequestResponse","targetRequest","pendingSignalRequests","RequestResponse_Reason","OK","handleDataPacket","rpcRequest","handleIncomingRpcRequest","responseTimeoutMs","rpcResponse","handleIncomingRpcResponse","rpcAck","handleIncomingRpcAck","allParticipantsAllowed","perms","TrackPermission","allTracks","allowAll","allowedTrackSids","trackPermissionToProto","onTrackUnmuted","onTrackMuted","onTrackUpstreamPaused","onTrackUpstreamResumed","onTrackFeatureUpdate","handleSubscribedQualityUpdate","roomOptions","newCodecs_1_1","newCodecs_1","publishAdditionalCodecForTrack","subscribedQualities","handleLocalTrackUnpublished","unpublished","unpublishTrack","currentPermissions","query","onchange","activeDeviceMap","lastCameraError","cameraError","lastMicrophoneError","microphoneError","setMetadata","requestMetadataUpdate","setCameraEnabled","publishOptions","setTrackEnabled","setMicrophoneEnabled","setScreenShareEnabled","setE2EEEnabled","GCM","republishAllTracks","republishPromise","pendingTrack","waitForPendingPublicationOfSource","createTracks","createScreenTracks","MediaDevicesError","publishPromises","localTrack","publishTrack","publishedTracks","screenAudioTrack","enableCameraAndMicrophone","mergedOptions","audioCaptureDefaults","videoCaptureDefaults","AudioStreamAcquired","isAudio","trackConstraints","conOrBool","screenVideo","contentHint","screenAudio","publishOrRepublishTrack","options_1","isRepublish","defaultConstraints","existingPublication","deviceKind","isStereoInput","isStereo","supportedSafariVersion","isE2EESimulcastSupported","e2ee","publishPromise","publish","publishedTrack","capabilities","getCapabilities","hasAV1","supportsAV1","hasVP9","supportsVP9","mime","AddTrackRequest","disableDtx","stereo","disableRed","defaultRes","SimulcastCodec","_k","getDefaultDegradationPreference","trackTransceiver","primaryCodecMime","updatedCodec","serverRequested","computeTrackBackupEncodings","stopOnUnpublish","getPublicationForTrack","pubLogContext","negotiationNeeded","trackSender","unpublishTracks","restartTracks","localPubs","publishData","data_1","reliable","topic","UserPacket","publishDtmf","digit","SipDTMF","sendChatMessage","randomUUID","ChatMessage","editChatMessage","editText","originalMessage","editTimestamp","performRpc","destinationIdentity","responseTimeout","_this5","publishRpcRequest","ackTimeoutId","responseTimeoutId","responsePayload","responseError","registerRpcMethod","unregisterRpcMethod","setTrackSubscriptionPermissions","callerIdentity","publishRpcAck","publishRpcResponse","RpcRequest","RpcResponse","RpcAck","handleParticipantDisconnected","pendingIdentity","setEnabledPublishCodecs","mutedOnServer","publishPromiseEntry","RemoteTrackPublication","allowed","currentVideoQuality","handleVisibilityChange","emitTrackUpdate","handleVideoDimensionsChange","videoDimensions","subscribed","setSubscribed","prevStatus","subscriptionStatus","prevPermission","permissionStatus","ParticipantTracks","emitSubscriptionUpdateIfChanged","emitPermissionUpdateIfChanged","Unsubscribed","Subscribed","Desired","Allowed","setEnabled","isManualOperationAllowed","setVideoQuality","setVideoDimensions","setVideoFPS","videoQuality","prevTrack","setAllowed","setSubscriptionError","SubscriptionFailed","prevMetadataMuted","previousStatus","currentStatus","SubscriptionStatusChanged","previousPermissionStatus","SubscriptionPermissionChanged","UpdateTrackSettings","UpdateSettings","RemoteParticipant","fromParticipantInfo","rpID","remoteParticipant","volumeMap","TrackSubscriptionPermissionChanged","TrackSubscriptionStatusChanged","previousTrack","TrackSubscriptionFailed","audioPublication","addSubscribedMediaTrack","triesLeft","getTrackPublicationBySid","hasMetadata","validTracks","newTracks","existingTrackOfSource","oldTrack","sendUnpublish","TrackUnpublished","setAudioOutput","Room","activeSpeakers","audioEnabled","isVideoPlaybackBlocked","bufferedEvents","isResuming","unlockDisconnect","disconnectLock","connectFuture","setAndEmitConnectionState","Connecting","connectFn","attemptConnection","nextUrl","recreateEngine","clearConnectionFutures","connectSignal","e2eeManager","serverVersion","serverRegion","roomSid","applyJoinResponse","enabledPublishCodecs","sifTrailer","handleParticipantUpdates","otherParticipants","handleRoomUpdate","maybeCreateEngine","acquireAudioContext","connOptions","setupLocalParticipantEvents","resultingError","onPageLeave","registerConnectionReconcile","args_1","stopTracks","startAudio","elements","audioId","dummyAudioEl","getElementById","append","handleAudioPlaybackStarted","handleAudioPlaybackFailed","startVideo","handleVideoPlaybackStarted","handleVideoPlaybackFailed","handleRestarting","clearConnectionReconcile","handleSignalRestarted","Reconnected","emitBufferedEvents","participantInfos","sidToIdentity","ParticipantInfo_State","getOrCreateParticipant","handleActiveSpeakersUpdate","seenSids","speaker","getRemoteParticipantBySid","emitWhenConnected","ActiveSpeakersChanged","handleSpeakersChanged","speakerUpdates","lastSpeakers","handleStreamStateUpdate","streamStateUpdate","streamStates","newStreamState","TrackStreamStateChanged","handleSubscriptionPermissionUpdate","handleSubscriptionError","handleUserPacket","handleTranscription","handleSipDtmf","handleChatMessage","handleMetrics","userPacket","DataReceived","SipDTMFReceived","bufferedSegments","_remoteParticipant","transcription","transcribedParticipantIdentity","firstReceivedTimesMap","final","firstReceivedTime","lastReceivedTime","extractTranscriptionSegments","transcriptionReceivedTimes","TranscriptionReceived","chatMessage","extractChatMessage","metrics","MetricsReceived","canPlaybackAudio","AudioPlaybackStatusChanged","VideoPlaybackStatusChanged","handleDeviceChange","availableDevices","availableDevice","previousDevice","getActiveDevice","ActiveDeviceChanged","kinds","devicesOfKind","activeDevice","switchActiveDevice","deviceInfo","MediaDevicesChanged","oldRoom","roomInfo","RoomMetadataChanged","activeRecording","RecordingStatusChanged","handleConnectionQualityUpdate","onLocalParticipantMetadataChanged","onLocalParticipantNameChanged","onLocalAttributesChanged","changedAttributes","ParticipantAttributesChanged","onLocalTrackMuted","onLocalTrackUnmuted","onTrackProcessorUpdate","onPublish","onLocalTrackRestarted","LocalAudioSilenceDetected","onLocalConnectionQualityChanged","onMediaDevicesError","onLocalParticipantPermissionsChanged","onLocalChatMessageSent","setupE2EE","cleanupRegistry","register","getSid","numParticipants","numPublishers","onTrackAdded","SignalReconnecting","updateSubscriptions","subscribedSid","trackPublication","getLocalDevices","prepareConnection","simulateScenario","postAction","SimulateScenario","canPlaybackVideo","deviceId_1","needsUpdateWithoutTracks","deviceConstraint","prevDeviceId","reconnectedHandler","cleanup","unpackStreamId","shouldStopTracks","ParticipantDisconnected","newContextIsRunning","createParticipant","existingParticipant","ParticipantConnected","consecutiveFailures","connectionReconcileInterval","numFailures","closed","transportsConnected","STATE_MISMATCH","simulateParticipants","useRealTracks","participantOptions","aspectRatios","Room$1","emptyTimeout","maxParticipants","creationTime","turnPassword","enabledCodecs","ParticipantInfo","camPub","TrackInfo","audioPub","dummyVideo","minimizedArgs","mapArgs","CheckStatus","FinalizationRegistry","confidence","extendStatics","_arguments","generator","__generator","trys","ops","verb","SuppressedError","AvatarQuality","VoiceEmotion","TaskType","TaskMode","StreamingEvents","jsonDescriptor","pipecat","TextFrame","AudioRawFrame","sampleRate","TranscriptionFrame","userId","Frame","APIError","__","StreamingAvatar","basePath","eventTarget","EventTarget","webSocket","scriptProcessor","mediaStreamAudioSource","mediaDevicesStream","createStartAvatar","requestData","sessionInfo","newSession","session_id","roomMessage","eventMsg","messageString","hasVideoTrack","hasAudioTrack","STREAM_READY","STREAM_DISCONNECTED","access_token","startSession","startVoiceChat","devicesStream","e_1","useSilencePrompt","loadAudioRawFrame","connectWebSocket","createScriptProcessor","onaudioprocess","pcmS16Array","float32Array","int16Array","clampedValue","convertFloat32ToS16PCM","inputBuffer","pcmByteArray","audioRawFrame","encodedFrame","closeVoiceChat","avatar_name","avatarName","knowledge_base_id","knowledgeId","knowledge_base","knowledgeBase","voice","voice_id","voiceId","emotion","elevenlabs_settings","elevenlabsSettings","video_encoding","disable_idle_timeout","disableIdleTimeout","speak","taskType","task_type","TALK","taskMode","ASYNC","task_mode","startListening","stopListening","stopAvatar","eventType","errorText","getRequestUrl","Authorization","CustomEvent","endpoint","websocketUrl","eventData","event_type","AvatarComponent","contentLoading","isLastIndex","chatMode","loadingMessage","clearLoadingMessage","updateUserMessage","greet","setGreet","avatarState","setAvatarState","setStream","initialized","setInitialized","avatar","avatarId","avatarStatus","setAvatarStatus","NOT_INITIALIZED","isPlaying","setIsPlaying","isListening","setIsListening","interrupted","setInterrupted","setIsVisible","avatarContainerRef","stopAvatarState","SPEAKING","_avatar$current","_avatar$current2","LISTENING","IDLE","firstTalk","_mediaStream$current","_avatar$current3","REPEAT","INITIALIZING","_avatar$current4","_avatar$current5","encryptedToken","encryptedData","decryptKey","decryptToken","AVATAR_START_TALKING","AVATAR_STOP_TALKING","LIVE_CHAT","USER_TALKING_MESSAGE","_mediaStream$current2","Low","isoCode","toast","_avatar$current7","_avatar$current8","INITIALIZED","_avatar$current9","_mediaStream$current4","TEXT","_mediaStream$current3","onloadedmetadata","_avatar$current6","greetings","_avatarContainerRef$c","scrollIntoView","behavior","_jsx","objectFit","borderRadius","onAnimationStart","useCurrentHeight","setHeight","languages","isTypeof","isToString","isInstanceOf","isNull","isEventDefined","isErrorDefined","isError","internalLogger","reactVersion","reactVersionMajor","getMajorReactVersion","isReactVersionAtLeast","InternalLoggerLevel","defaultInternalLogger","defaultInternalLoggerLevel","defaultUnpatchedConsole","BaseExtension","unpatchedConsole","metas","logDebug","logInfo","logWarn","logError","BaseInstrumentation","ReactRouterVersion","NavigationType","EVENT_SESSION_START","EVENT_SESSION_RESUME","EVENT_ROUTE_CHANGE","activeEvent","createNewActiveEvent","route","Route","isInitialized","setReactRouterV4V5Dependencies","FaroRoute","computedMatch","isExact","globalObject","initializeReactRouterV4V5Instrumentation","componentDisplayName","listen","_location","Push","Pop","pushEvent","skipDedupe","createRoutesFromChildren","matchRoutes","Routes","useLocation","useNavigationType","getNumberOfUrlSegments","currentSegment","FaroRoutes","navigationType","routes","lastRouteRef","matchedRoutes","pathBuilder","branch","getRouteFromLocation","toRoute","toUrl","fromRoute","fromUrl","ActualRoutes","routesComponent","initializeReactRouterV6Instrumentation","newDependencies","initializeReactRouterV6DataRouterInstrumentation","internalGlobalObjectKey","faro","registerFaro","instrumentations","unpause","isolate","setInternalFaroOnGlobalObject","preventGlobalExposure","globalObjectKey","setFaroOnGlobalObject","valueTypeRegex","webkitLineRegex","webkitEvalRegex","webkitAddressAtString","firefoxLineRegex","firefoxEvalRegex","safariExtensionString","safariWebExtensionString","reactMinifiedRegex","buildStackFrame","stackFrame","function","getDataFromSafariExtensions","isSafariExtension","isSafariWebExtension","getStackFramesFromError","stacktrace","_line","stackFrames","submatch","getErrorDetails","isDomErrorRes","isEventRes","isErrorEvent","isDomError","isDomException","isEvent","defaultExceptionType","registerOnerror","oldOnerror","eventIsString","initialStackFrame","getValueAndTypeFromMessage","pushError","registerOnunhandledrejection","ErrorsInstrumentation","persisted","getEntriesByType","responseStart","activationStart","prerendering","wasDiscarded","rating","PerformanceObserver","supportedEntryTypes","getEntries","buffered","firstHiddenTime","reportAllChanges","interactionId","interactionCount","entryType","latency","requestIdleCallback","processingStart","WebVitalsBasic","pushMeasurement","mapping","indicator","metric","cls","hadRecentInput","takeRecords","fcp","onFCP","fid","inp","PerformanceEventTiming","durationThreshold","lcp","ttfb","domInteractive","domContentLoadedEventStart","domComplete","classList","processingEnd","renderTime","tt","gt","yt","Tt","eventEntry","loadState","attribution","unknownString","webStorageType","isWebStorageAvailable","storage","testItem","setItem","getItem","webStorageMechanism","isWebStorageTypeAvailable","isLocalStorageAvailable","isSessionStorageAvailable","NAVIGATION_ID_STORAGE_KEY","loadStateKey","timeToFirstByteKey","WebVitalsWithAttribution","corePushMeasurement","measureCLS","measureFCP","measureFID","measureINP","measureLCP","measureTTFB","largestShiftTarget","largestShiftTime","largestShiftValue","largestShiftSource","largestShiftEntry","onCLS","buildInitialValues","addIfPresent","buildInitialContext","timeToFirstByte","firstByteToFCP","navigationEntry","fcpEntry","onFID","interactionTarget","interactionTargetElement","interactionType","interactionTime","nextPaintTime","processedEventEntries","longAnimationFrameEntries","inputDelay","processingDuration","presentationDelay","onINP","resourceLoadDelay","resourceLoadDuration","elementRenderDelay","requestStart","responseEnd","lcpEntry","lcpResourceEntry","onLCP","waitingDuration","cacheDuration","dnsDuration","connectionDuration","requestDuration","workerStart","domainLookupStart","connectStart","connectEnd","onTTFB","navigationEntryId","navigation_type","navigation_entry_id","WebVitalsInstrumentation","intializeWebVitalsInstrumentation","trackWebVitalsAttribution","dateNow","getCurrentTimestamp","timestampToIsoString","alphabet","genShortID","isSampled","sessionTracking","samplingRate","sampler","throttle","lastPending","timeoutBehavior","stringifyExternalJson","valueSeen","getCircularDependencyReplacer","STORAGE_KEY","SESSION_INACTIVITY_TIME","defaultSessionTrackingConfig","persistent","maxSessionPersistenceTime","createUserSessionObject","lastActivity","isUserSessionValid","getUserSessionUpdater","fetchUserSession","storeUserSession","forceSessionExtend","sessionTrackingConfig","isPersistentSessions","sessionFromStorage","addSessionMetadataToNextSession","setSession","sessionMeta","onSessionChange","previousSession","PersistentSessionsManager","updateSession","updateUserSession","removeUserSession","storageTypeLocal","storedSession","sessionFromLocalStorage","userSession","VolatileSessionsManager","storageTypeSession","sessionFromSessionStorage","getSessionManagerByConfig","SessionInstrumentation","sendSessionStartEvent","notifiedSession","createInitialSession","SessionManager","sessionsConfig","lifecycleType","initialSession","createSession","registerBeforeSendHook","addBeforeSendHooks","newItem","newAttributes","initialSessionMeta","ViewInstrumentation","sendViewChangedEvent","notifiedView","fromView","toView","w3cTraceparentFormat","getSpanContextFromServerTiming","serverTimings","serverEntry","entryUrlIsIgnored","entryName","includePerformanceEntry","performanceEntryJSON","allowProps","allowPropKey","allowPropValue","perfEntryPropVal","createFaroResourceTiming","resourceEntryRaw","decodedBodySize","domainLookupEnd","encodedBodySize","initiatorType","nextHopProtocol","redirectEnd","redirectStart","renderBlockingStatus","rbs","responseStatus","secureConnectionStart","transferSize","toFaroPerformanceTimingString","tcpHandshakeTime","dnsLookupTime","tlsNegotiationTime","redirectTime","requestTime","responseTime","fetchTime","serviceWorkerTime","cacheHitStatus","cacheType","getCacheType","createFaroNavigationTiming","navigationEntryRaw","domContentLoadedEventEnd","loadEventEnd","loadEventStart","parserStart","domLoading","getDocumentParsingTime","pageLoadTime","documentParsingTime","domProcessingTime","domContentLoadHandlerTime","onLoadTime","DEFAULT_TRACK_RESOURCES","PerformanceInstrumentation","handleReady","readyStateCompleteHandler","onDocumentReady","getIgnoreUrls","faroNavigationId","faroNavigationEntryResolve","faroNavigationEntryPromise","observedEntries","navEntryJson","serverTiming","faroPreviousNavigationId","faroNavigationEntry","timestampOverwriteMs","getNavigationTimings","trackResources","resourceEntryJson","faroResourceEntry","faroResourceId","observeResourceTimings","flatMap","defaultLogLevel","LOG","allLogLevels","defaultLogArgsSerializer","ConsoleInstrumentation","consoleInstrumentation","disabledLevels","defaultDisabledLevels","consoleErrorAsLog","pushLog","getWebInstrumentations","enablePerformanceInstrumentation","captureConsole","captureConsoleDisabledLevels","TransportItemType","transportItemTypeToBodyKey","EXCEPTION","MEASUREMENT","EVENT","deepEqual","aIsArray","bIsArray","aIsObject","bIsObject","aKeys","bKeys","aKey","stacktraceParser","parseCause","initializeAPI","tracesApi","_unpatchedConsole","_config","otel","getOTEL","getTraceContext","trace_id","span_id","initOTEL","isOTELInitialized","pushTraces","initializeTracesAPI","lastPayload","parseStacktrace","changeStacktraceParser","newStacktraceParser","getStacktraceParser","frames","testingPayload","stackTrace","dedupe","initializeExceptionsAPI","metaSession","metaUser","metaView","setUser","user","resetUser","resetSession","getSession","setView","previousView","getView","initializeMetaAPI","logArgsSerializer","initializeLogsAPI","initializeMeasurementsAPI","domain","eventDomain","initializeEventsAPI","createInternalLogger","internalLoggerLevel","OFF","BatchExecutor","sendFn","signalBuffer","itemLimit","sendTimeout","flushInterval","addItem","groupItems","itemMap","currentItems","createBeforeSendHookFromIgnorePatterns","shouldIgnoreEvent","initializeTransports","beforeSendHooks","applyBeforeSendHooks","filteredItems","modified","batchedSend","isBatched","batchExecutor","batching","newTransports","newTransport","existingTransport","newBeforeSendHooks","beforeSendHook","addIgnoreErrorsPatterns","ignoreErrorsPatterns","ignoreErrorsPattern","getBeforeSendHooks","filteredItem","instantSend","isPaused","transportsToRemove","transportToRemove","existingTransportIndex","removeBeforeSendHooks","_len5","beforeSendHooksToRemove","_key5","initializeUnpatchedConsole","initializeFaro","initializeInternalLogger","notifyListeners","newItems","itemsToRemove","currentItem","currentListener","initializeMetas","newInstrumentations","newInstrumentation","existingInstrumentation","instrumentationsToRemove","instrumentationToRemove","existingInstrumentationIndex","initializeInstrumentations","app","bundleId","appName","registerInitialMetas","beforeSend","ignoreErrors","registerInitialTransports","registerInitialInstrumentations","defaultBatchingConfig","defaultMetas","browserMeta","osName","getBrands","viewportWidth","viewportHeight","pageMeta","page","k6Meta","k6Properties","k6","isK6Browser","testRunId","BaseTransport","mergeResourceSpans","traces","currentResource","currentSpans","newSpans","FetchTransport","disabledUntil","rateLimitBackoffMs","defaultRateLimitBackoffMs","getNow","promiseBuffer","concurrency","work","producer","promiseProducer","createPromiseBuffer","bufferSize","signals","getTransportBody","requestOptions","apiKey","restOfRequestOptions","__rest","keepalive","extendFaroSession","getRetryAfterDate","ignoreUrls","retryAfterHeader","SessionExpiredString","_writeStringToArray","aString","_writeInt16ToArray","aNumber","_writeInt32ToArray","_floatBits","getWaveBlob","blobData","as32BitFloat","contextOptions","audioBuffer","_getAudioBuffer","frameLength","numberOfChannels","bitsPerSample","byteRate","blockAlign","wavDataByteLength","waveFileData","subChunk2Size","chunkSize","bitDepth","channelData","_writeAudioBufferToArray","_chatData$chats","_chatData$chats$at","_chatData$chats$at$me","_chatData$chats2","_chatData$chats3","_chatData$chats3$at","_chatData$chats3$at$m","_chatData$chats4","_chatData$chats5","_chatData$chats5$at","_chatData$chats5$at$m","_chatData$chats6","_chatData$chats7","_chatData$chats7$at","_chatData$chats7$at$m","_chatData$chats8","_chatData$chats9","_chatData$chats9$at","_chatData$chats9$at$m","_chatData$chats10","_chatData$chats11","_chatData$chats11$at","_chatData$chats11$at$","_chatData$chats12","_selectedChat$message","_selectedChat$message2","_selectedChat$message3","_selectedChat$message4","_selectedChat$message5","_selectedChat$message6","_selectedChat$message7","openNavbar","setOpenNavbar","setPrompt","showScrollButton","setShowScrollButton","setLoading","windowHeight","scrollableRef","dataStreamController","metaDataController","transcriptDataController","defaultChat","chats","chatData","setChatData","usePersistedState","selectedChat","chat","setChatMode","setLoadingMessage","dataStreamLoading","setDataStreamLoading","recorderControls","useVoiceVisualizer","transcripting","setTranscripting","avatarComponentRef","selectedLanguage","setSelectedLanguage","submitPrompt","scrollToBottom","prevChatData","newChatData","byUser","topSources","fetchApis","updateChatsWithStatus","lastMessageIndex","_selectedChat$tokenId","tokenId","threadId","fetchDataStream","fetchMetaData","_dataStreamController","requestBody","getReader","_dataStreamController2","_dataStreamController3","prevState","_metaDataController$c","lastCompleteObjects","_metaDataController$c2","_lastCompleteObjects","lastObjects","value1","_lastObjects","parsedMetadata","stopApis","_transcriptDataContro","_dataStreamController4","_metaDataController$c3","startNewChat","_selectedChat$tokenId2","mWavBlob","formData","FormData","_transcriptDataContro2","textResponse","textJson","transcription_text","transcriptVoice","handleScroll","scrollable","isAtBottom","scrollHeight","_scrollableRef$curren","scrollTo","_jsxs","toggleNavbar","fabriceAI","newChat","_chat$messages$at$mes","_chat$messages","_chat$messages$at","switchChat","packageJson","PITCH_FABRICE","_Fragment","_message$message","_message$topSources","userChat","aiChat","question","scrollDown","VoiceVisualizer","audioWave","mic","sendDisabled","ToastContainer","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","Action","invariant","cond","parsePath","parsedPath","hashIndex","searchIndex","ResultType","locationArg","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","score","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","relativePath","caseSensitive","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","compiledParams","regexpSource","paramName","compilePath","captureGroups","splatValue","nextChar","validMutationMethodsArr","validRequestMethodsArr","ZONE_CONTEXT_KEY","ZoneContextManager","_enabled","_zoneCounter","_activeContextFromZone","activeZone","_bindFunction","manager","contextWrapper","_bindListener","__ot_listeners","_patchAddEventListener","_patchRemoveEventListener","_createZoneName","_createZone","zoneName","_getActiveZone","patchedListener","NoopMeter","createGauge","NOOP_GAUGE_METRIC","createHistogram","NOOP_HISTOGRAM_METRIC","createCounter","NOOP_COUNTER_METRIC","createUpDownCounter","NOOP_UP_DOWN_COUNTER_METRIC","createObservableGauge","NOOP_OBSERVABLE_GAUGE_METRIC","createObservableCounter","NOOP_OBSERVABLE_COUNTER_METRIC","createObservableUpDownCounter","NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC","addBatchObservableCallback","_observables","removeBatchObservableCallback","NoopMetric","NoopCounterMetric","NoopUpDownCounterMetric","NoopGaugeMetric","NoopHistogramMetric","NoopObservableMetric","addCallback","removeCallback","NoopObservableCounterMetric","NoopObservableGaugeMetric","NoopObservableUpDownCounterMetric","NOOP_METER","NOOP_METER_PROVIDER","NoopMeterProvider","getMeter","MetricsAPI","setGlobalMeterProvider","getMeterProvider","GLOBAL_LOGS_API_KEY","NoopLogger","_logRecord","NOOP_LOGGER","NOOP_LOGGER_PROVIDER","NoopLoggerProvider","ProxyLogger","logRecord","_getLogger","getDelegateLogger","ProxyLoggerProvider","LogsAPI","_proxyLoggerProvider","setGlobalLoggerProvider","getLoggerProvider","requiredVersion","makeGetter","logs","SpanKind","Resource","asyncAttributesPromise","asyncAttributesPending","_syncAttributes","_asyncAttributesPromise","asyncAttributes","waitForAsyncAttributes","mergedSyncAttributes","__assign","mergedAttributesPromise","thisAsyncAttributes","otherAsyncAttributes","SpanStatusCode","TMP_EXCEPTION_TYPE","TMP_EXCEPTION_MESSAGE","TMP_EXCEPTION_STACKTRACE","TMP_HTTP_METHOD","TMP_HTTP_URL","TMP_HTTP_HOST","TMP_HTTP_SCHEME","TMP_HTTP_STATUS_CODE","TMP_HTTP_USER_AGENT","TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","TMP_HTTP_RESPONSE_CONTENT_LENGTH","TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_EXCEPTION_TYPE","SEMATTRS_EXCEPTION_MESSAGE","SEMATTRS_EXCEPTION_STACKTRACE","SEMATTRS_HTTP_METHOD","SEMATTRS_HTTP_URL","SEMATTRS_HTTP_HOST","SEMATTRS_HTTP_SCHEME","SEMATTRS_HTTP_STATUS_CODE","SEMATTRS_HTTP_USER_AGENT","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","Span","parentTracer","_deprecatedClock","_droppedAttributesCount","_droppedEventsCount","_droppedLinksCount","UNSET","_ended","_duration","_performanceStartTime","_performanceOffset","_startTimeProvided","_getTime","_spanLimits","getSpanLimits","_attributeValueLengthLimit","attributeValueLengthLimit","_spanProcessor","getActiveSpanProcessor","onStart","_isSpanEnded","attributeCountLimit","_truncateToSize","attributesOrStartTime","eventCountLimit","msDuration","exception","_truncateToLimitUtil","FALLBACK_OTEL_TRACES_SAMPLER","AlwaysOn","loadDefaultConfig","buildSamplerFromEnv","forceFlushTimeoutMillis","generalLimits","spanLimits","linkCountLimit","attributePerEventCountLimit","attributePerLinkCountLimit","mergeResourceWithDefaults","AlwaysOff","ParentBasedAlwaysOff","TraceIdRatio","getSamplerProbabilityFromEnv","ParentBasedTraceIdRatio","probability","ForceFlushState","Tracer","_tracerProvider","localConfig","userConfig","perInstanceDefaults","DEFAULT_CONFIG","mergeConfig","_sampler","_generalLimits","_idGenerator","parentSpan","parentSpanContext","INTERNAL","samplingResult","initAttributes","getGeneralLimits","MultiSpanProcessor","_spanProcessors","forceFlush","spanProcessor","shutdown","NoopSpanProcessor","_span","BatchSpanProcessorBase","_exporter","_isExporting","_finishedSpans","_droppedSpansCount","_maxExportBatchSize","maxExportBatchSize","_maxQueueSize","maxQueueSize","_scheduledDelayMillis","scheduledDelayMillis","_exportTimeoutMillis","exportTimeoutMillis","_shutdownOnce","_shutdown","isCalled","_flushAll","_parentContext","_addToBuffer","onShutdown","_maybeStartTimer","_flushOneBatch","_clearTimer","timer","doExport","SUCCESS","pendingResources","BatchSpanProcessor","onInit","disableAutoFlushOnDocumentHide","_visibilityChangeListener","_pageHideListener","BasicTracerProvider","_registeredSpanProcessors","_tracers","mergedConfig","parsedEnvConfig","_m","_l","reconfigureLimits","spanProcessors","activeSpanProcessor","defaultExporter","_buildExporterFromEnv","batchProcessor","addSpanProcessor","_buildPropagatorFromEnv","timeoutInterval","_getPropagator","_registeredPropagators","_getSpanExporter","_registeredExporters","uniquePropagatorNames","validPropagators","exporterName","StackContextManager","previousContext","WebTracerProvider","FaroTraceExporter","resultCallback","traceEvent","createExportTraceServiceRequest","resourceSpan","scopeSpan","SPAN_KIND_CLIENT","faroEventAttributes","sendFaroEvents","safeExecuteInTheMiddle","onFinish","preventThrowingError","PerformanceTimingNames","urlNormalizingAnchor","AttributeNames","InstrumentationAbstract","instrumentationName","instrumentationVersion","_wrap","_unwrap","_massWrap","_massUnwrap","setConfig","_diag","_tracer","_meter","_logger","_updateMetricInstruments","setMeterProvider","meterProvider","setLoggerProvider","loggerProvider","getModuleDefinitions","initResult","getConfig","setTracerProvider","tracerProvider","_runSpanCustomizationHook","hookHandler","triggerName","InstrumentationBase","hasKey","addSpanNetworkEvent","performanceName","refPerfName","perfTime","refTime","refName","PTN","FETCH_START","addSpanNetworkEvents","ignoreNetworkEvents","DOMAIN_LOOKUP_START","DOMAIN_LOOKUP_END","CONNECT_START","SECURE_CONNECTION_START","CONNECT_END","REQUEST_START","RESPONSE_START","RESPONSE_END","encodedLength","ENCODED_BODY_SIZE","decodedLength","DECODED_BODY_SIZE","getOrigin","getResource","spanUrl","startTimeHR","endTimeHR","resources","ignoredResources","parsedSpanUrl","parseUrl","filteredResources","resourceStartTime","resourceEndTime","filterResourcesForSpan","mainRequest","sorted","valueA","valueB","sortResources","corsPreFlightRequest","corsPreFlightRequestEndTime","spanEndTimeHR","bestGap","spanEndTime","minTime","currentGap","findMainRequest","baseURI","shouldPropagateTraceHeaders","propagateTraceHeaderCorsUrls","propagateTraceHeaderUrls","propagateTraceHeaderUrl","DIAG_LOGGER","getFetchBodyLength","requestInit","ReadableStream","pipeThrough","resolveLength","lengthPromise","TransformStream","bytearray","enqueue","_getBodyNonDestructively","length_1","Document","XMLSerializer","serializeToString","getFormDataSize","getByteLength","getXHRBodyLength","TEXT_ENCODER","EventNames","release","FetchInstrumentation","_usedResources","_tasksCount","_addChildSpan","childSpan","web","_addFinalSpanAttributes","parsedUrl","HTTP_STATUS_TEXT","_addHeaders","Request","Headers","_clearResources","clearTimingResources","clearResourceTimings","_createSpan","core","CLIENT","COMPONENT","_findResourceAndAddNetworkEvents","resourcesObserver","_markResourceAsUsed","_endSpan","spanData","performanceEndTime","_patchConstructor","createdSpan","_prepareSpanData","endSpanOnError","_applyAttributesAfterFetch","endSpanOnSuccess","resClone","resClone4Hook_1","reader_1","read_1","measureRequestSize","applyCustomAttributesOnSpan","entryTypes","XMLHttpRequestInstrumentation","_xhrMem","headers_1","setRequestHeader","xhrMem","_applyAttributesAfterXHR","_addResourceObserver","PerformanceResourceTiming","createdResources","_cleanPreviousSpanInformation","callbackToRemoveEvents","currentSpan","METHOD_OPEN","_patchOpen","_patchSend","endSpan","sendStartTime","endSpanTimeout","EVENT_ERROR","EVENT_ABORT","onTimeout","EVENT_TIMEOUT","EVENT_LOAD","bodyLength","METHOD_SEND","unregister","FaroXhrInstrumentation","parentCreateSpan","setSpanStatus","httpStatusCode","fetchCustomAttributeFunctionWithDefaults","_request","setSpanStatusOnFetchError","xhrCustomAttributeFunctionWithDefaults","setSpanStatusOnXMLHttpRequestError","getDefaultOTELInstrumentations","fetchInstrumentationOptions","xhrInstrumentationOptions","sharedOptions","fetchOpts","createFetchInstrumentationOptions","xhrOpts","createXhrInstrumentationOptions","getSamplingDecision","FaroSessionSpanProcessor","TracingInstrumentation","resourceAttributes","SCHEDULED_BATCH_DELAY_MS","instrumentationOptions","flat","instrumentation","enableInstrumentations","registerInstrumentations","disableLogs","ProviderContext","useProviderContext","errorMessage","useContext2","$148a7a147e38ea7f$var$RTL_SCRIPTS","$148a7a147e38ea7f$var$RTL_LANGS","$148a7a147e38ea7f$export$702d680b21cbd764","localeString","Intl","Locale","maximize","textInfo","getTextInfo","$b5e257d569688ac6$var$defaultContext","$b5e257d569688ac6$var$SSRContext","$670gB$react","$b5e257d569688ac6$var$IsSSRContext","$b5e257d569688ac6$var$canUseDOM","$b5e257d569688ac6$var$componentIds","$b5e257d569688ac6$var$useCounter","$670gB$useContext","$670gB$useRef","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_ReactCurrentOwner","_React___SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","currentOwner","prevComponentValue","$b5e257d569688ac6$var$getSnapshot","$b5e257d569688ac6$var$getServerSnapshot","$b5e257d569688ac6$var$subscribe","onStoreChange","$b5e257d569688ac6$export$535bd6ca7f90a273","$1e5a04cdaf7d1af8$var$localeSymbol","$1e5a04cdaf7d1af8$export$f09106e7c6677ec5","DateTimeFormat","supportedLocalesOf","$1e5a04cdaf7d1af8$var$currentLocale","$1e5a04cdaf7d1af8$var$listeners","$1e5a04cdaf7d1af8$var$updateLocale","$1e5a04cdaf7d1af8$export$188ec29ebc2bdc3a","isSSR","$ffhGL$useIsSSR","setDefaultLocale","$ffhGL$useState","$ffhGL$useEffect","$18f2051aff69b9bf$var$I18nContext","$h9FiU$react","$18f2051aff69b9bf$export$a54013f0d02a8f82","$7215afc6de606d6b$export$de79e2c695e052f3","$7215afc6de606d6b$var$supportsPreventScrollCached","preventScroll","$7215afc6de606d6b$var$supportsPreventScroll","scrollableElements","rootScrollingElement","scrollingElement","scrollWidth","$7215afc6de606d6b$var$getScrollableElements","$7215afc6de606d6b$var$restoreScrollPosition","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$78551043582a6a98","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$b7d78993b74f766d","$ea8dcbcb9ea1b556$var$RouterContext","$g3jFn$createContext","isNative","modifiers","$ea8dcbcb9ea1b556$var$getSyntheticLink","$ea8dcbcb9ea1b556$export$95185d699e05d4d7","useHref","$ea8dcbcb9ea1b556$export$323e4fc2fa4753fb","navigate","$g3jFn$useMemo","routerOptions","hasAttribute","$ea8dcbcb9ea1b556$export$efa8c9099e530235","$g3jFn$react","setOpening","_window_event_type","_window_event","KeyboardEvent","keyIdentifier","MouseEvent","isOpening","HTMLAnchorElement","$f57aed4a881a3485$var$Context","$4AOtR$react","$f57aed4a881a3485$export$178405afcd8c5eb","$4AOtR$useContext","modalCount","setModalCount","$4AOtR$useState","$4AOtR$useMemo","addModal","removeModal","$f57aed4a881a3485$var$OverlayContainerDOM","modalProviderProps","$f57aed4a881a3485$export$d9aaed4c3ece1bc0","$f57aed4a881a3485$export$bf688221f59024e5","MotionGlobalConfig","skipAnimations","useManualTiming","MotionConfigContext","transformPagePoint","isStatic","reducedMotion","validMotionProps","shouldForward","isValidMotionProp","loadExternalIsValidProp","isValidProp","MotionConfig","useConstant","NextUIProvider","disableAnimation","disableRipple","skipFramerMotionAnimations","validationBehavior","defaultDates","createCalendar","otherProps","RouterProvider","maxDate","minDate","I18nProvider","OverlayProvider","coreConfig","browserConfig","initialMetas","createMetas","makeCoreConfig","coreInit","newInternalLogger","newApi","initMessage","router","V6","V6_data_router","V5","V4","initializeReactRouterInstrumentation","App","reportWebVitals"],"sourceRoot":""}