@sentry/node 10.69.0 → 11.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/bundler-plugin/esbuild.js +19 -0
- package/build/cjs/bundler-plugin/esbuild.js.map +1 -0
- package/build/cjs/bundler-plugin/rollup.js +12 -0
- package/build/cjs/bundler-plugin/rollup.js.map +1 -0
- package/build/cjs/bundler-plugin/vite.js +12 -0
- package/build/cjs/bundler-plugin/vite.js.map +1 -0
- package/build/cjs/bundler-plugin/webpack.js +18 -0
- package/build/cjs/bundler-plugin/webpack.js.map +1 -0
- package/build/cjs/cron/common.js +52 -0
- package/build/cjs/cron/common.js.map +1 -0
- package/build/cjs/cron/cron.js +88 -0
- package/build/cjs/cron/cron.js.map +1 -0
- package/build/cjs/cron/index.js +14 -0
- package/build/cjs/cron/index.js.map +1 -0
- package/build/cjs/cron/node-cron.js +52 -0
- package/build/cjs/cron/node-cron.js.map +1 -0
- package/build/cjs/cron/node-schedule.js +41 -0
- package/build/cjs/cron/node-schedule.js.map +1 -0
- package/build/cjs/index.js +111 -123
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/integrations/anr/index.js +159 -0
- package/build/cjs/integrations/anr/index.js.map +1 -0
- package/build/cjs/integrations/childProcess.js +81 -0
- package/build/cjs/integrations/childProcess.js.map +1 -0
- package/build/cjs/integrations/console.js +95 -0
- package/build/cjs/integrations/console.js.map +1 -0
- package/build/cjs/integrations/context.js +391 -0
- package/build/cjs/integrations/context.js.map +1 -0
- package/build/cjs/integrations/contextlines.js +251 -0
- package/build/cjs/integrations/contextlines.js.map +1 -0
- package/build/cjs/integrations/fs/index.js +1 -1
- package/build/cjs/integrations/fs/index.js.map +1 -1
- package/build/cjs/integrations/fs/vendored/constants.js.map +1 -1
- package/build/cjs/integrations/http/SentryHttpInstrumentation.js +67 -0
- package/build/cjs/integrations/http/SentryHttpInstrumentation.js.map +1 -0
- package/build/cjs/integrations/http/httpServerIntegration.js +77 -0
- package/build/cjs/integrations/http/httpServerIntegration.js.map +1 -0
- package/build/cjs/integrations/http/httpServerSpansIntegration.js +243 -0
- package/build/cjs/integrations/http/httpServerSpansIntegration.js.map +1 -0
- package/build/cjs/integrations/http/index.js +71 -0
- package/build/cjs/integrations/http/index.js.map +1 -0
- package/build/cjs/integrations/local-variables/common.js +20 -0
- package/build/cjs/integrations/local-variables/common.js.map +1 -0
- package/build/cjs/integrations/local-variables/index.js +10 -0
- package/build/cjs/integrations/local-variables/index.js.map +1 -0
- package/build/cjs/integrations/local-variables/local-variables-async.js +106 -0
- package/build/cjs/integrations/local-variables/local-variables-async.js.map +1 -0
- package/build/cjs/integrations/modules.js +98 -0
- package/build/cjs/integrations/modules.js.map +1 -0
- package/build/cjs/integrations/node-fetch/index.js +24 -0
- package/build/cjs/integrations/node-fetch/index.js.map +1 -0
- package/build/cjs/integrations/node-fetch/undici-instrumentation.js +261 -0
- package/build/cjs/integrations/node-fetch/undici-instrumentation.js.map +1 -0
- package/build/cjs/integrations/nodeRuntimeMetrics.js +181 -0
- package/build/cjs/integrations/nodeRuntimeMetrics.js.map +1 -0
- package/build/cjs/integrations/onuncaughtexception.js +92 -0
- package/build/cjs/integrations/onuncaughtexception.js.map +1 -0
- package/build/cjs/integrations/onunhandledrejection.js +92 -0
- package/build/cjs/integrations/onunhandledrejection.js.map +1 -0
- package/build/cjs/integrations/pino.js +116 -0
- package/build/cjs/integrations/pino.js.map +1 -0
- package/build/cjs/integrations/processSession.js +22 -0
- package/build/cjs/integrations/processSession.js.map +1 -0
- package/build/cjs/integrations/spotlight.js +79 -0
- package/build/cjs/integrations/spotlight.js.map +1 -0
- package/build/cjs/integrations/systemError.js +54 -0
- package/build/cjs/integrations/systemError.js.map +1 -0
- package/build/cjs/integrations/tracing/express.js +0 -52
- package/build/cjs/integrations/tracing/express.js.map +1 -1
- package/build/cjs/integrations/tracing/fastify/index.js +1 -16
- package/build/cjs/integrations/tracing/fastify/index.js.map +1 -1
- package/build/cjs/integrations/tracing/hapi/index.js +0 -16
- package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
- package/build/cjs/integrations/tracing/index.js +29 -87
- package/build/cjs/integrations/tracing/index.js.map +1 -1
- package/build/cjs/integrations/tracing/koa/index.js +0 -24
- package/build/cjs/integrations/tracing/koa/index.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/cache.js +1 -0
- package/build/cjs/integrations/tracing/redis/cache.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/index.js +10 -26
- package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
- package/build/cjs/integrations/winston.js +84 -0
- package/build/cjs/integrations/winston.js.map +1 -0
- package/build/cjs/logs/capture.js +26 -0
- package/build/cjs/logs/capture.js.map +1 -0
- package/build/cjs/logs/exports.js +32 -0
- package/build/cjs/logs/exports.js.map +1 -0
- package/build/cjs/nodeVersion.js +10 -0
- package/build/cjs/nodeVersion.js.map +1 -0
- package/build/cjs/otel/logger.js +21 -0
- package/build/cjs/otel/logger.js.map +1 -0
- package/build/cjs/proxy/base.js +69 -0
- package/build/cjs/proxy/base.js.map +1 -0
- package/build/cjs/proxy/index.js +112 -0
- package/build/cjs/proxy/index.js.map +1 -0
- package/build/cjs/proxy/parse-proxy-response.js +88 -0
- package/build/cjs/proxy/parse-proxy-response.js.map +1 -0
- package/build/cjs/sdk/api.js +61 -0
- package/build/cjs/sdk/api.js.map +1 -0
- package/build/cjs/sdk/client.js +113 -0
- package/build/cjs/sdk/client.js.map +1 -0
- package/build/cjs/sdk/index.js +185 -41
- package/build/cjs/sdk/index.js.map +1 -1
- package/build/cjs/sdk/initOtel.js +14 -91
- package/build/cjs/sdk/initOtel.js.map +1 -1
- package/build/cjs/transports/http.js +102 -0
- package/build/cjs/transports/http.js.map +1 -0
- package/build/cjs/utils/debug.js +17 -0
- package/build/cjs/utils/debug.js.map +1 -0
- package/build/cjs/utils/entry-point.js +36 -0
- package/build/cjs/utils/entry-point.js.map +1 -0
- package/build/cjs/utils/errorhandling.js +33 -0
- package/build/cjs/utils/errorhandling.js.map +1 -0
- package/build/cjs/utils/module.js +37 -0
- package/build/cjs/utils/module.js.map +1 -0
- package/build/cjs/utils/outgoingFetchRequest.js +178 -0
- package/build/cjs/utils/outgoingFetchRequest.js.map +1 -0
- package/build/cjs/utils/spotlight.js +18 -0
- package/build/cjs/utils/spotlight.js.map +1 -0
- package/build/esm/bundler-plugin/esbuild.js +17 -0
- package/build/esm/bundler-plugin/esbuild.js.map +1 -0
- package/build/esm/bundler-plugin/rollup.js +10 -0
- package/build/esm/bundler-plugin/rollup.js.map +1 -0
- package/build/esm/bundler-plugin/vite.js +10 -0
- package/build/esm/bundler-plugin/vite.js.map +1 -0
- package/build/esm/bundler-plugin/webpack.js +16 -0
- package/build/esm/bundler-plugin/webpack.js.map +1 -0
- package/build/esm/cron/common.js +50 -0
- package/build/esm/cron/common.js.map +1 -0
- package/build/esm/cron/cron.js +86 -0
- package/build/esm/cron/cron.js.map +1 -0
- package/build/esm/cron/index.js +12 -0
- package/build/esm/cron/index.js.map +1 -0
- package/build/esm/cron/node-cron.js +50 -0
- package/build/esm/cron/node-cron.js.map +1 -0
- package/build/esm/cron/node-schedule.js +39 -0
- package/build/esm/cron/node-schedule.js.map +1 -0
- package/build/esm/index.js +36 -36
- package/build/esm/integrations/anr/index.js +155 -0
- package/build/esm/integrations/anr/index.js.map +1 -0
- package/build/esm/integrations/anr/worker-script.js +2 -0
- package/build/esm/integrations/childProcess.js +79 -0
- package/build/esm/integrations/childProcess.js.map +1 -0
- package/build/esm/integrations/console.js +93 -0
- package/build/esm/integrations/console.js.map +1 -0
- package/build/esm/integrations/context.js +383 -0
- package/build/esm/integrations/context.js.map +1 -0
- package/build/esm/integrations/contextlines.js +245 -0
- package/build/esm/integrations/contextlines.js.map +1 -0
- package/build/esm/integrations/fs/index.js +1 -1
- package/build/esm/integrations/fs/index.js.map +1 -1
- package/build/esm/integrations/fs/vendored/constants.js.map +1 -1
- package/build/esm/integrations/http/SentryHttpInstrumentation.js +65 -0
- package/build/esm/integrations/http/SentryHttpInstrumentation.js.map +1 -0
- package/build/esm/integrations/http/httpServerIntegration.js +74 -0
- package/build/esm/integrations/http/httpServerIntegration.js.map +1 -0
- package/build/esm/integrations/http/httpServerSpansIntegration.js +240 -0
- package/build/esm/integrations/http/httpServerSpansIntegration.js.map +1 -0
- package/build/esm/integrations/http/index.js +69 -0
- package/build/esm/integrations/http/index.js.map +1 -0
- package/build/esm/integrations/local-variables/common.js +15 -0
- package/build/esm/integrations/local-variables/common.js.map +1 -0
- package/build/esm/integrations/local-variables/index.js +8 -0
- package/build/esm/integrations/local-variables/index.js.map +1 -0
- package/build/esm/integrations/local-variables/local-variables-async.js +103 -0
- package/build/esm/integrations/local-variables/local-variables-async.js.map +1 -0
- package/build/esm/integrations/local-variables/worker-script.js +2 -0
- package/build/esm/integrations/modules.js +57 -0
- package/build/esm/integrations/modules.js.map +1 -0
- package/build/esm/integrations/node-fetch/index.js +22 -0
- package/build/esm/integrations/node-fetch/index.js.map +1 -0
- package/build/esm/integrations/node-fetch/undici-instrumentation.js +259 -0
- package/build/esm/integrations/node-fetch/undici-instrumentation.js.map +1 -0
- package/build/esm/integrations/nodeRuntimeMetrics.js +178 -0
- package/build/esm/integrations/nodeRuntimeMetrics.js.map +1 -0
- package/build/esm/integrations/onuncaughtexception.js +89 -0
- package/build/esm/integrations/onuncaughtexception.js.map +1 -0
- package/build/esm/integrations/onunhandledrejection.js +89 -0
- package/build/esm/integrations/onunhandledrejection.js.map +1 -0
- package/build/esm/integrations/pino.js +114 -0
- package/build/esm/integrations/pino.js.map +1 -0
- package/build/esm/integrations/processSession.js +20 -0
- package/build/esm/integrations/processSession.js.map +1 -0
- package/build/esm/integrations/spotlight.js +76 -0
- package/build/esm/integrations/spotlight.js.map +1 -0
- package/build/esm/integrations/systemError.js +52 -0
- package/build/esm/integrations/systemError.js.map +1 -0
- package/build/esm/integrations/tracing/express.js +2 -51
- package/build/esm/integrations/tracing/express.js.map +1 -1
- package/build/esm/integrations/tracing/fastify/index.js +3 -17
- package/build/esm/integrations/tracing/fastify/index.js.map +1 -1
- package/build/esm/integrations/tracing/hapi/index.js +2 -16
- package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
- package/build/esm/integrations/tracing/index.js +12 -69
- package/build/esm/integrations/tracing/index.js.map +1 -1
- package/build/esm/integrations/tracing/koa/index.js +2 -24
- package/build/esm/integrations/tracing/koa/index.js.map +1 -1
- package/build/esm/integrations/tracing/redis/cache.js +2 -1
- package/build/esm/integrations/tracing/redis/cache.js.map +1 -1
- package/build/esm/integrations/tracing/redis/index.js +11 -26
- package/build/esm/integrations/tracing/redis/index.js.map +1 -1
- package/build/esm/integrations/winston.js +82 -0
- package/build/esm/integrations/winston.js.map +1 -0
- package/build/esm/logs/capture.js +24 -0
- package/build/esm/logs/capture.js.map +1 -0
- package/build/esm/logs/exports.js +24 -0
- package/build/esm/logs/exports.js.map +1 -0
- package/build/esm/nodeVersion.js +8 -0
- package/build/esm/nodeVersion.js.map +1 -0
- package/build/esm/otel/logger.js +19 -0
- package/build/esm/otel/logger.js.map +1 -0
- package/build/esm/package.json +1 -1
- package/build/esm/proxy/base.js +67 -0
- package/build/esm/proxy/base.js.map +1 -0
- package/build/esm/proxy/index.js +110 -0
- package/build/esm/proxy/index.js.map +1 -0
- package/build/esm/proxy/parse-proxy-response.js +86 -0
- package/build/esm/proxy/parse-proxy-response.js.map +1 -0
- package/build/esm/sdk/api.js +58 -0
- package/build/esm/sdk/api.js.map +1 -0
- package/build/esm/sdk/client.js +111 -0
- package/build/esm/sdk/client.js.map +1 -0
- package/build/esm/sdk/index.js +187 -42
- package/build/esm/sdk/index.js.map +1 -1
- package/build/esm/sdk/initOtel.js +15 -91
- package/build/esm/sdk/initOtel.js.map +1 -1
- package/build/esm/transports/http.js +100 -0
- package/build/esm/transports/http.js.map +1 -0
- package/build/esm/utils/debug.js +15 -0
- package/build/esm/utils/debug.js.map +1 -0
- package/build/esm/utils/entry-point.js +33 -0
- package/build/esm/utils/entry-point.js.map +1 -0
- package/build/esm/utils/errorhandling.js +31 -0
- package/build/esm/utils/errorhandling.js.map +1 -0
- package/build/esm/utils/module.js +35 -0
- package/build/esm/utils/module.js.map +1 -0
- package/build/esm/utils/outgoingFetchRequest.js +174 -0
- package/build/esm/utils/outgoingFetchRequest.js.map +1 -0
- package/build/esm/utils/spotlight.js +16 -0
- package/build/esm/utils/spotlight.js.map +1 -0
- package/build/import-hook.mjs +0 -10
- package/build/types/bundler-plugin/esbuild.d.ts +34 -0
- package/build/types/bundler-plugin/esbuild.d.ts.map +1 -0
- package/build/types/bundler-plugin/rollup.d.ts +35 -0
- package/build/types/bundler-plugin/rollup.d.ts.map +1 -0
- package/build/types/bundler-plugin/vite.d.ts +36 -0
- package/build/types/bundler-plugin/vite.d.ts.map +1 -0
- package/build/types/bundler-plugin/webpack.d.ts +37 -0
- package/build/types/bundler-plugin/webpack.d.ts.map +1 -0
- package/build/types/cron/common.d.ts +5 -0
- package/build/types/cron/common.d.ts.map +1 -0
- package/build/types/cron/cron.d.ts +43 -0
- package/build/types/cron/cron.d.ts.map +1 -0
- package/build/types/cron/index.d.ts +10 -0
- package/build/types/cron/index.d.ts.map +1 -0
- package/build/types/cron/node-cron.d.ts +28 -0
- package/build/types/cron/node-cron.d.ts.map +1 -0
- package/build/types/cron/node-schedule.d.ts +19 -0
- package/build/types/cron/node-schedule.d.ts.map +1 -0
- package/build/types/index.d.ts +35 -35
- package/build/types/index.d.ts.map +1 -1
- package/build/types/integrations/anr/common.d.ts +79 -0
- package/build/types/integrations/anr/common.d.ts.map +1 -0
- package/build/types/integrations/anr/index.d.ts +59 -0
- package/build/types/integrations/anr/index.d.ts.map +1 -0
- package/build/types/integrations/anr/worker.d.ts +2 -0
- package/build/types/integrations/anr/worker.d.ts.map +1 -0
- package/build/types/integrations/childProcess.d.ts +22 -0
- package/build/types/integrations/childProcess.d.ts.map +1 -0
- package/build/types/integrations/console.d.ts +23 -0
- package/build/types/integrations/console.d.ts.map +1 -0
- package/build/types/integrations/context.d.ts +33 -0
- package/build/types/integrations/context.d.ts.map +1 -0
- package/build/types/integrations/contextlines.d.ts +35 -0
- package/build/types/integrations/contextlines.d.ts.map +1 -0
- package/build/types/integrations/featureFlagShims/openFeature.d.ts.map +1 -1
- package/build/types/integrations/fs/index.d.ts.map +1 -1
- package/build/types/integrations/http/SentryHttpInstrumentation.d.ts +102 -0
- package/build/types/integrations/http/SentryHttpInstrumentation.d.ts.map +1 -0
- package/build/types/integrations/http/httpServerIntegration.d.ts +67 -0
- package/build/types/integrations/http/httpServerIntegration.d.ts.map +1 -0
- package/build/types/integrations/http/httpServerSpansIntegration.d.ts +59 -0
- package/build/types/integrations/http/httpServerSpansIntegration.d.ts.map +1 -0
- package/build/types/integrations/http/index.d.ts +127 -0
- package/build/types/integrations/http/index.d.ts.map +1 -0
- package/build/types/integrations/local-variables/common.d.ts +79 -0
- package/build/types/integrations/local-variables/common.d.ts.map +1 -0
- package/build/types/integrations/local-variables/index.d.ts +4 -0
- package/build/types/integrations/local-variables/index.d.ts.map +1 -0
- package/build/types/integrations/local-variables/local-variables-async.d.ts +9 -0
- package/build/types/integrations/local-variables/local-variables-async.d.ts.map +1 -0
- package/build/types/integrations/local-variables/worker.d.ts +2 -0
- package/build/types/integrations/local-variables/worker.d.ts.map +1 -0
- package/build/types/integrations/modules.d.ts +17 -0
- package/build/types/integrations/modules.d.ts.map +1 -0
- package/build/types/integrations/node-fetch/index.d.ts +9 -0
- package/build/types/integrations/node-fetch/index.d.ts.map +1 -0
- package/build/types/integrations/node-fetch/types.d.ts +95 -0
- package/build/types/integrations/node-fetch/types.d.ts.map +1 -0
- package/build/types/integrations/node-fetch/undici-instrumentation.d.ts +17 -0
- package/build/types/integrations/node-fetch/undici-instrumentation.d.ts.map +1 -0
- package/build/types/integrations/nodeRuntimeMetrics.d.ts +66 -0
- package/build/types/integrations/nodeRuntimeMetrics.d.ts.map +1 -0
- package/build/types/integrations/onuncaughtexception.d.ts +33 -0
- package/build/types/integrations/onuncaughtexception.d.ts.map +1 -0
- package/build/types/integrations/onunhandledrejection.d.ts +22 -0
- package/build/types/integrations/onunhandledrejection.d.ts.map +1 -0
- package/build/types/integrations/pino.d.ts +61 -0
- package/build/types/integrations/pino.d.ts.map +1 -0
- package/build/types/integrations/processSession.d.ts +7 -0
- package/build/types/integrations/processSession.d.ts.map +1 -0
- package/build/types/integrations/spotlight.d.ts +18 -0
- package/build/types/integrations/spotlight.d.ts.map +1 -0
- package/build/types/integrations/systemError.d.ts +14 -0
- package/build/types/integrations/systemError.d.ts.map +1 -0
- package/build/types/integrations/tracing/express.d.ts +1 -14
- package/build/types/integrations/tracing/express.d.ts.map +1 -1
- package/build/types/integrations/tracing/fastify/index.d.ts +1 -5
- package/build/types/integrations/tracing/fastify/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/hapi/index.d.ts +0 -23
- package/build/types/integrations/tracing/hapi/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/index.d.ts +0 -9
- package/build/types/integrations/tracing/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/koa/index.d.ts +0 -46
- package/build/types/integrations/tracing/koa/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/cache.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/index.d.ts +0 -7
- package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/vendored/types.d.ts +0 -15
- package/build/types/integrations/tracing/redis/vendored/types.d.ts.map +1 -1
- package/build/types/integrations/winston.d.ts +55 -0
- package/build/types/integrations/winston.d.ts.map +1 -0
- package/build/types/logs/capture.d.ts +29 -0
- package/build/types/logs/capture.d.ts.map +1 -0
- package/build/types/logs/exports.d.ts +150 -0
- package/build/types/logs/exports.d.ts.map +1 -0
- package/build/types/nodeVersion.d.ts +8 -0
- package/build/types/nodeVersion.d.ts.map +1 -0
- package/build/types/otel/logger.d.ts +5 -0
- package/build/types/otel/logger.d.ts.map +1 -0
- package/build/types/proxy/base.d.ts +61 -0
- package/build/types/proxy/base.d.ts.map +1 -0
- package/build/types/proxy/helpers.d.ts +37 -0
- package/build/types/proxy/helpers.d.ts.map +1 -0
- package/build/types/proxy/index.d.ts +70 -0
- package/build/types/proxy/index.d.ts.map +1 -0
- package/build/types/proxy/parse-proxy-response.d.ts +39 -0
- package/build/types/proxy/parse-proxy-response.d.ts.map +1 -0
- package/build/types/sdk/api.d.ts +8 -0
- package/build/types/sdk/api.d.ts.map +1 -0
- package/build/types/sdk/client.d.ts +31 -0
- package/build/types/sdk/client.d.ts.map +1 -0
- package/build/types/sdk/index.d.ts +1 -19
- package/build/types/sdk/index.d.ts.map +1 -1
- package/build/types/sdk/initOtel.d.ts +11 -20
- package/build/types/sdk/initOtel.d.ts.map +1 -1
- package/build/types/sdk/scope.d.ts +7 -0
- package/build/types/sdk/scope.d.ts.map +1 -0
- package/build/types/transports/http-module.d.ts +27 -0
- package/build/types/transports/http-module.d.ts.map +1 -0
- package/build/types/transports/http.d.ts +17 -0
- package/build/types/transports/http.d.ts.map +1 -0
- package/build/types/transports/index.d.ts +3 -0
- package/build/types/transports/index.d.ts.map +1 -0
- package/build/types/types.d.ts +35 -23
- package/build/types/types.d.ts.map +1 -1
- package/build/types/utils/addOriginToSpan.d.ts +5 -0
- package/build/types/utils/addOriginToSpan.d.ts.map +1 -0
- package/build/types/utils/debug.d.ts +5 -0
- package/build/types/utils/debug.d.ts.map +1 -0
- package/build/types/utils/entry-point.d.ts +24 -0
- package/build/types/utils/entry-point.d.ts.map +1 -0
- package/build/types/utils/errorhandling.d.ts +5 -0
- package/build/types/utils/errorhandling.d.ts.map +1 -0
- package/build/types/utils/module.d.ts +3 -0
- package/build/types/utils/module.d.ts.map +1 -0
- package/build/types/utils/outgoingFetchRequest.d.ts +20 -0
- package/build/types/utils/outgoingFetchRequest.d.ts.map +1 -0
- package/build/types/utils/prepareEvent.d.ts +17 -0
- package/build/types/utils/prepareEvent.d.ts.map +1 -0
- package/build/types/utils/spotlight.d.ts +8 -0
- package/build/types/utils/spotlight.d.ts.map +1 -0
- package/package.json +37 -31
- package/build/cjs/init.js +0 -4
- package/build/cjs/init.js.map +0 -1
- package/build/cjs/integrations/http.js +0 -69
- package/build/cjs/integrations/http.js.map +0 -1
- package/build/cjs/integrations/node-fetch.js +0 -24
- package/build/cjs/integrations/node-fetch.js.map +0 -1
- package/build/cjs/integrations/tracing/InstrumentationNodeModuleFile.js +0 -15
- package/build/cjs/integrations/tracing/InstrumentationNodeModuleFile.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/index.js +0 -21
- package/build/cjs/integrations/tracing/amqplib/index.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/instrumentation.js +0 -117
- package/build/cjs/integrations/tracing/amqplib/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/patches.js +0 -185
- package/build/cjs/integrations/tracing/amqplib/vendored/patches.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js +0 -26
- package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/types.js +0 -17
- package/build/cjs/integrations/tracing/amqplib/vendored/types.js.map +0 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/utils.js +0 -129
- package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/anthropic-ai/index.js +0 -24
- package/build/cjs/integrations/tracing/anthropic-ai/index.js.map +0 -1
- package/build/cjs/integrations/tracing/anthropic-ai/instrumentation.js +0 -72
- package/build/cjs/integrations/tracing/anthropic-ai/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/connect/index.js +0 -35
- package/build/cjs/integrations/tracing/connect/index.js.map +0 -1
- package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js +0 -16
- package/build/cjs/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +0 -137
- package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/connect/vendored/internal-types.js +0 -8
- package/build/cjs/integrations/tracing/connect/vendored/internal-types.js.map +0 -1
- package/build/cjs/integrations/tracing/connect/vendored/utils.js +0 -36
- package/build/cjs/integrations/tracing/connect/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/dataloader/index.js +0 -26
- package/build/cjs/integrations/tracing/dataloader/index.js.map +0 -1
- package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js +0 -227
- package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/fastify/v3/constants.js +0 -6
- package/build/cjs/integrations/tracing/fastify/v3/constants.js.map +0 -1
- package/build/cjs/integrations/tracing/fastify/v3/enums/AttributeNames.js +0 -24
- package/build/cjs/integrations/tracing/fastify/v3/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +0 -220
- package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/fastify/v3/utils.js +0 -64
- package/build/cjs/integrations/tracing/fastify/v3/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/firebase/firebase.js +0 -21
- package/build/cjs/integrations/tracing/firebase/firebase.js.map +0 -1
- package/build/cjs/integrations/tracing/firebase/otel/firebaseInstrumentation.js +0 -28
- package/build/cjs/integrations/tracing/firebase/otel/firebaseInstrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +0 -155
- package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +0 -1
- package/build/cjs/integrations/tracing/firebase/otel/patches/functions.js +0 -141
- package/build/cjs/integrations/tracing/firebase/otel/patches/functions.js.map +0 -1
- package/build/cjs/integrations/tracing/genericPool/index.js +0 -21
- package/build/cjs/integrations/tracing/genericPool/index.js.map +0 -1
- package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js +0 -122
- package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/google-genai/index.js +0 -23
- package/build/cjs/integrations/tracing/google-genai/index.js.map +0 -1
- package/build/cjs/integrations/tracing/google-genai/instrumentation.js +0 -68
- package/build/cjs/integrations/tracing/google-genai/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/index.js +0 -34
- package/build/cjs/integrations/tracing/graphql/index.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/enum.js +0 -47
- package/build/cjs/integrations/tracing/graphql/vendored/enum.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -15
- package/build/cjs/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js +0 -329
- package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/internal-types.js +0 -6
- package/build/cjs/integrations/tracing/graphql/vendored/internal-types.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/symbols.js +0 -8
- package/build/cjs/integrations/tracing/graphql/vendored/symbols.js.map +0 -1
- package/build/cjs/integrations/tracing/graphql/vendored/utils.js +0 -265
- package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/hapi/vendored/enums/AttributeNames.js +0 -11
- package/build/cjs/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js +0 -255
- package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/hapi/vendored/internal-types.js +0 -24
- package/build/cjs/integrations/tracing/hapi/vendored/internal-types.js.map +0 -1
- package/build/cjs/integrations/tracing/hapi/vendored/utils.js +0 -85
- package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/hono/constants.js +0 -14
- package/build/cjs/integrations/tracing/hono/constants.js.map +0 -1
- package/build/cjs/integrations/tracing/hono/index.js +0 -86
- package/build/cjs/integrations/tracing/hono/index.js.map +0 -1
- package/build/cjs/integrations/tracing/hono/instrumentation.js +0 -201
- package/build/cjs/integrations/tracing/hono/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/kafka/index.js +0 -21
- package/build/cjs/integrations/tracing/kafka/index.js.map +0 -1
- package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js +0 -237
- package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/kafka/vendored/semconv.js +0 -22
- package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/kafka/vendored/utils.js +0 -114
- package/build/cjs/integrations/tracing/kafka/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/knex/index.js +0 -26
- package/build/cjs/integrations/tracing/knex/index.js.map +0 -1
- package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +0 -135
- package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/knex/vendored/semconv.js +0 -10
- package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/knex/vendored/utils.js +0 -84
- package/build/cjs/integrations/tracing/knex/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/koa/vendored/enums/AttributeNames.js +0 -10
- package/build/cjs/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +0 -127
- package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/koa/vendored/internal-types.js +0 -6
- package/build/cjs/integrations/tracing/koa/vendored/internal-types.js.map +0 -1
- package/build/cjs/integrations/tracing/koa/vendored/types.js +0 -10
- package/build/cjs/integrations/tracing/koa/vendored/types.js.map +0 -1
- package/build/cjs/integrations/tracing/koa/vendored/utils.js +0 -36
- package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/langchain/index.js +0 -23
- package/build/cjs/integrations/tracing/langchain/index.js.map +0 -1
- package/build/cjs/integrations/tracing/langchain/instrumentation.js +0 -160
- package/build/cjs/integrations/tracing/langchain/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/langgraph/index.js +0 -23
- package/build/cjs/integrations/tracing/langgraph/index.js.map +0 -1
- package/build/cjs/integrations/tracing/langgraph/instrumentation.js +0 -96
- package/build/cjs/integrations/tracing/langgraph/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/lrumemoizer/index.js +0 -21
- package/build/cjs/integrations/tracing/lrumemoizer/index.js.map +0 -1
- package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js +0 -38
- package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/mongo/index.js +0 -21
- package/build/cjs/integrations/tracing/mongo/index.js.map +0 -1
- package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js +0 -129
- package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/mongo/vendored/patches.js +0 -150
- package/build/cjs/integrations/tracing/mongo/vendored/patches.js.map +0 -1
- package/build/cjs/integrations/tracing/mongo/vendored/utils.js +0 -40
- package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/mongoose/index.js +0 -22
- package/build/cjs/integrations/tracing/mongoose/index.js.map +0 -1
- package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +0 -240
- package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +0 -1
- package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +0 -41
- package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql/index.js +0 -21
- package/build/cjs/integrations/tracing/mysql/index.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js +0 -185
- package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql/vendored/utils.js +0 -38
- package/build/cjs/integrations/tracing/mysql/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql2/index.js +0 -22
- package/build/cjs/integrations/tracing/mysql2/index.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +0 -138
- package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +0 -81
- package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/openai/index.js +0 -23
- package/build/cjs/integrations/tracing/openai/index.js.map +0 -1
- package/build/cjs/integrations/tracing/openai/instrumentation.js +0 -80
- package/build/cjs/integrations/tracing/openai/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/index.js +0 -27
- package/build/cjs/integrations/tracing/postgres/index.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -11
- package/build/cjs/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/vendored/enums/SpanNames.js +0 -11
- package/build/cjs/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js +0 -225
- package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/postgres/vendored/utils.js +0 -151
- package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/postgresjs.js +0 -265
- package/build/cjs/integrations/tracing/postgresjs.js.map +0 -1
- package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +0 -147
- package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +0 -445
- package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/tedious/index.js +0 -21
- package/build/cjs/integrations/tracing/tedious/index.js.map +0 -1
- package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +0 -154
- package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/tedious/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/tedious/vendored/utils.js +0 -29
- package/build/cjs/integrations/tracing/tedious/vendored/utils.js.map +0 -1
- package/build/cjs/integrations/tracing/vercelai/constants.js +0 -6
- package/build/cjs/integrations/tracing/vercelai/constants.js.map +0 -1
- package/build/cjs/integrations/tracing/vercelai/index.js +0 -36
- package/build/cjs/integrations/tracing/vercelai/index.js.map +0 -1
- package/build/cjs/integrations/tracing/vercelai/instrumentation.js +0 -176
- package/build/cjs/integrations/tracing/vercelai/instrumentation.js.map +0 -1
- package/build/cjs/preload.js +0 -8
- package/build/cjs/preload.js.map +0 -1
- package/build/cjs/sdk/diagnosticsChannelInjection.js +0 -21
- package/build/cjs/sdk/diagnosticsChannelInjection.js.map +0 -1
- package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +0 -33
- package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +0 -1
- package/build/cjs/utils/setHttpServerSpanRouteAttribute.js +0 -21
- package/build/cjs/utils/setHttpServerSpanRouteAttribute.js.map +0 -1
- package/build/esm/init.js +0 -4
- package/build/esm/init.js.map +0 -1
- package/build/esm/integrations/http.js +0 -66
- package/build/esm/integrations/http.js.map +0 -1
- package/build/esm/integrations/node-fetch.js +0 -22
- package/build/esm/integrations/node-fetch.js.map +0 -1
- package/build/esm/integrations/tracing/InstrumentationNodeModuleFile.js +0 -13
- package/build/esm/integrations/tracing/InstrumentationNodeModuleFile.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/index.js +0 -18
- package/build/esm/integrations/tracing/amqplib/index.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/vendored/instrumentation.js +0 -115
- package/build/esm/integrations/tracing/amqplib/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/vendored/patches.js +0 -177
- package/build/esm/integrations/tracing/amqplib/vendored/patches.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/vendored/semconv.js +0 -14
- package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/vendored/types.js +0 -15
- package/build/esm/integrations/tracing/amqplib/vendored/types.js.map +0 -1
- package/build/esm/integrations/tracing/amqplib/vendored/utils.js +0 -117
- package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/anthropic-ai/index.js +0 -21
- package/build/esm/integrations/tracing/anthropic-ai/index.js.map +0 -1
- package/build/esm/integrations/tracing/anthropic-ai/instrumentation.js +0 -70
- package/build/esm/integrations/tracing/anthropic-ai/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/connect/index.js +0 -31
- package/build/esm/integrations/tracing/connect/index.js.map +0 -1
- package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js +0 -13
- package/build/esm/integrations/tracing/connect/vendored/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +0 -135
- package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/connect/vendored/internal-types.js +0 -6
- package/build/esm/integrations/tracing/connect/vendored/internal-types.js.map +0 -1
- package/build/esm/integrations/tracing/connect/vendored/utils.js +0 -32
- package/build/esm/integrations/tracing/connect/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/dataloader/index.js +0 -23
- package/build/esm/integrations/tracing/dataloader/index.js.map +0 -1
- package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js +0 -225
- package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/fastify/v3/constants.js +0 -4
- package/build/esm/integrations/tracing/fastify/v3/constants.js.map +0 -1
- package/build/esm/integrations/tracing/fastify/v3/enums/AttributeNames.js +0 -20
- package/build/esm/integrations/tracing/fastify/v3/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +0 -218
- package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/fastify/v3/utils.js +0 -60
- package/build/esm/integrations/tracing/fastify/v3/utils.js.map +0 -1
- package/build/esm/integrations/tracing/firebase/firebase.js +0 -18
- package/build/esm/integrations/tracing/firebase/firebase.js.map +0 -1
- package/build/esm/integrations/tracing/firebase/otel/firebaseInstrumentation.js +0 -26
- package/build/esm/integrations/tracing/firebase/otel/firebaseInstrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +0 -152
- package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +0 -1
- package/build/esm/integrations/tracing/firebase/otel/patches/functions.js +0 -138
- package/build/esm/integrations/tracing/firebase/otel/patches/functions.js.map +0 -1
- package/build/esm/integrations/tracing/genericPool/index.js +0 -18
- package/build/esm/integrations/tracing/genericPool/index.js.map +0 -1
- package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js +0 -120
- package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/google-genai/index.js +0 -20
- package/build/esm/integrations/tracing/google-genai/index.js.map +0 -1
- package/build/esm/integrations/tracing/google-genai/instrumentation.js +0 -66
- package/build/esm/integrations/tracing/google-genai/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/index.js +0 -31
- package/build/esm/integrations/tracing/graphql/index.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/enum.js +0 -43
- package/build/esm/integrations/tracing/graphql/vendored/enum.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js +0 -13
- package/build/esm/integrations/tracing/graphql/vendored/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js +0 -327
- package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/internal-types.js +0 -4
- package/build/esm/integrations/tracing/graphql/vendored/internal-types.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/symbols.js +0 -5
- package/build/esm/integrations/tracing/graphql/vendored/symbols.js.map +0 -1
- package/build/esm/integrations/tracing/graphql/vendored/utils.js +0 -257
- package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/hapi/vendored/enums/AttributeNames.js +0 -9
- package/build/esm/integrations/tracing/hapi/vendored/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js +0 -253
- package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/hapi/vendored/internal-types.js +0 -19
- package/build/esm/integrations/tracing/hapi/vendored/internal-types.js.map +0 -1
- package/build/esm/integrations/tracing/hapi/vendored/utils.js +0 -76
- package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/hono/constants.js +0 -11
- package/build/esm/integrations/tracing/hono/constants.js.map +0 -1
- package/build/esm/integrations/tracing/hono/index.js +0 -82
- package/build/esm/integrations/tracing/hono/index.js.map +0 -1
- package/build/esm/integrations/tracing/hono/instrumentation.js +0 -199
- package/build/esm/integrations/tracing/hono/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/kafka/index.js +0 -18
- package/build/esm/integrations/tracing/kafka/index.js.map +0 -1
- package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js +0 -235
- package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/kafka/vendored/semconv.js +0 -12
- package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/kafka/vendored/utils.js +0 -108
- package/build/esm/integrations/tracing/kafka/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/knex/index.js +0 -23
- package/build/esm/integrations/tracing/knex/index.js.map +0 -1
- package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +0 -133
- package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/knex/vendored/semconv.js +0 -6
- package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/knex/vendored/utils.js +0 -75
- package/build/esm/integrations/tracing/knex/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/koa/vendored/enums/AttributeNames.js +0 -8
- package/build/esm/integrations/tracing/koa/vendored/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +0 -125
- package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/koa/vendored/internal-types.js +0 -4
- package/build/esm/integrations/tracing/koa/vendored/internal-types.js.map +0 -1
- package/build/esm/integrations/tracing/koa/vendored/types.js +0 -8
- package/build/esm/integrations/tracing/koa/vendored/types.js.map +0 -1
- package/build/esm/integrations/tracing/koa/vendored/utils.js +0 -33
- package/build/esm/integrations/tracing/koa/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/langchain/index.js +0 -20
- package/build/esm/integrations/tracing/langchain/index.js.map +0 -1
- package/build/esm/integrations/tracing/langchain/instrumentation.js +0 -158
- package/build/esm/integrations/tracing/langchain/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/langgraph/index.js +0 -20
- package/build/esm/integrations/tracing/langgraph/index.js.map +0 -1
- package/build/esm/integrations/tracing/langgraph/instrumentation.js +0 -94
- package/build/esm/integrations/tracing/langgraph/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/lrumemoizer/index.js +0 -18
- package/build/esm/integrations/tracing/lrumemoizer/index.js.map +0 -1
- package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js +0 -36
- package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/mongo/index.js +0 -18
- package/build/esm/integrations/tracing/mongo/index.js.map +0 -1
- package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js +0 -127
- package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/mongo/vendored/patches.js +0 -142
- package/build/esm/integrations/tracing/mongo/vendored/patches.js.map +0 -1
- package/build/esm/integrations/tracing/mongo/vendored/utils.js +0 -34
- package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/mongoose/index.js +0 -19
- package/build/esm/integrations/tracing/mongoose/index.js.map +0 -1
- package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +0 -236
- package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +0 -1
- package/build/esm/integrations/tracing/mongoose/vendored/utils.js +0 -38
- package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/mysql/index.js +0 -18
- package/build/esm/integrations/tracing/mysql/index.js.map +0 -1
- package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js +0 -183
- package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/mysql/vendored/semconv.js +0 -5
- package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/mysql/vendored/utils.js +0 -33
- package/build/esm/integrations/tracing/mysql/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/mysql2/index.js +0 -19
- package/build/esm/integrations/tracing/mysql2/index.js.map +0 -1
- package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +0 -136
- package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/mysql2/vendored/semconv.js +0 -5
- package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/mysql2/vendored/utils.js +0 -75
- package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/openai/index.js +0 -20
- package/build/esm/integrations/tracing/openai/index.js.map +0 -1
- package/build/esm/integrations/tracing/openai/instrumentation.js +0 -78
- package/build/esm/integrations/tracing/openai/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/index.js +0 -24
- package/build/esm/integrations/tracing/postgres/index.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js +0 -9
- package/build/esm/integrations/tracing/postgres/vendored/enums/AttributeNames.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/vendored/enums/SpanNames.js +0 -9
- package/build/esm/integrations/tracing/postgres/vendored/enums/SpanNames.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js +0 -223
- package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/vendored/semconv.js +0 -5
- package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/postgres/vendored/utils.js +0 -136
- package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/postgresjs.js +0 -261
- package/build/esm/integrations/tracing/postgresjs.js.map +0 -1
- package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +0 -145
- package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +0 -443
- package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/redis/vendored/semconv.js +0 -5
- package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/tedious/index.js +0 -18
- package/build/esm/integrations/tracing/tedious/index.js.map +0 -1
- package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +0 -152
- package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/tedious/vendored/semconv.js +0 -5
- package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/tedious/vendored/utils.js +0 -26
- package/build/esm/integrations/tracing/tedious/vendored/utils.js.map +0 -1
- package/build/esm/integrations/tracing/vercelai/constants.js +0 -4
- package/build/esm/integrations/tracing/vercelai/constants.js.map +0 -1
- package/build/esm/integrations/tracing/vercelai/index.js +0 -33
- package/build/esm/integrations/tracing/vercelai/index.js.map +0 -1
- package/build/esm/integrations/tracing/vercelai/instrumentation.js +0 -171
- package/build/esm/integrations/tracing/vercelai/instrumentation.js.map +0 -1
- package/build/esm/preload.js +0 -8
- package/build/esm/preload.js.map +0 -1
- package/build/esm/sdk/diagnosticsChannelInjection.js +0 -17
- package/build/esm/sdk/diagnosticsChannelInjection.js.map +0 -1
- package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +0 -30
- package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +0 -1
- package/build/esm/utils/setHttpServerSpanRouteAttribute.js +0 -19
- package/build/esm/utils/setHttpServerSpanRouteAttribute.js.map +0 -1
- package/build/loader-hook.mjs +0 -1
- package/build/types/init.d.ts +0 -2
- package/build/types/init.d.ts.map +0 -1
- package/build/types/integrations/http.d.ts +0 -131
- package/build/types/integrations/http.d.ts.map +0 -1
- package/build/types/integrations/node-fetch.d.ts +0 -9
- package/build/types/integrations/node-fetch.d.ts.map +0 -1
- package/build/types/integrations/tracing/InstrumentationNodeModuleFile.d.ts +0 -9
- package/build/types/integrations/tracing/InstrumentationNodeModuleFile.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/index.d.ts +0 -22
- package/build/types/integrations/tracing/amqplib/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/amqplib-types.d.ts +0 -44
- package/build/types/integrations/tracing/amqplib/vendored/amqplib-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/instrumentation.d.ts +0 -11
- package/build/types/integrations/tracing/amqplib/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/patches.d.ts +0 -11
- package/build/types/integrations/tracing/amqplib/vendored/patches.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -23
- package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/types.d.ts +0 -49
- package/build/types/integrations/tracing/amqplib/vendored/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts +0 -42
- package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/anthropic-ai/index.d.ts +0 -62
- package/build/types/integrations/tracing/anthropic-ai/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/anthropic-ai/instrumentation.d.ts +0 -19
- package/build/types/integrations/tracing/anthropic-ai/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/connect/index.d.ts +0 -48
- package/build/types/integrations/tracing/connect/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -9
- package/build/types/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts +0 -18
- package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts +0 -31
- package/build/types/integrations/tracing/connect/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/connect/vendored/utils.d.ts +0 -5
- package/build/types/integrations/tracing/connect/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/dataloader/index.d.ts +0 -22
- package/build/types/integrations/tracing/dataloader/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts +0 -18
- package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/dataloader/vendored/types.d.ts +0 -22
- package/build/types/integrations/tracing/dataloader/vendored/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/constants.d.ts +0 -3
- package/build/types/integrations/tracing/fastify/v3/constants.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/enums/AttributeNames.d.ts +0 -15
- package/build/types/integrations/tracing/fastify/v3/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/instrumentation.d.ts +0 -16
- package/build/types/integrations/tracing/fastify/v3/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/internal-types.d.ts +0 -7
- package/build/types/integrations/tracing/fastify/v3/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/types.d.ts +0 -21
- package/build/types/integrations/tracing/fastify/v3/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/fastify/v3/utils.d.ts +0 -28
- package/build/types/integrations/tracing/fastify/v3/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/firebase.d.ts +0 -8
- package/build/types/integrations/tracing/firebase/firebase.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/index.d.ts +0 -2
- package/build/types/integrations/tracing/firebase/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/otel/firebaseInstrumentation.d.ts +0 -14
- package/build/types/integrations/tracing/firebase/otel/firebaseInstrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/otel/index.d.ts +0 -3
- package/build/types/integrations/tracing/firebase/otel/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/otel/patches/firestore.d.ts +0 -22
- package/build/types/integrations/tracing/firebase/otel/patches/firestore.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/otel/patches/functions.d.ts +0 -18
- package/build/types/integrations/tracing/firebase/otel/patches/functions.d.ts.map +0 -1
- package/build/types/integrations/tracing/firebase/otel/types.d.ts +0 -100
- package/build/types/integrations/tracing/firebase/otel/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/genericPool/index.d.ts +0 -22
- package/build/types/integrations/tracing/genericPool/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +0 -5
- package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts +0 -11
- package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/google-genai/index.d.ts +0 -62
- package/build/types/integrations/tracing/google-genai/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/google-genai/instrumentation.d.ts +0 -20
- package/build/types/integrations/tracing/google-genai/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/index.d.ts +0 -50
- package/build/types/integrations/tracing/graphql/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/enum.d.ts +0 -38
- package/build/types/integrations/tracing/graphql/vendored/enum.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +0 -10
- package/build/types/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts +0 -2
- package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts +0 -25
- package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts +0 -63
- package/build/types/integrations/tracing/graphql/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/symbols.d.ts +0 -3
- package/build/types/integrations/tracing/graphql/vendored/symbols.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/types.d.ts +0 -33
- package/build/types/integrations/tracing/graphql/vendored/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/graphql/vendored/utils.d.ts +0 -14
- package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/enums/AttributeNames.d.ts +0 -6
- package/build/types/integrations/tracing/hapi/vendored/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/hapi-types.d.ts +0 -70
- package/build/types/integrations/tracing/hapi/vendored/hapi-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts +0 -72
- package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/internal-types.d.ts +0 -32
- package/build/types/integrations/tracing/hapi/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/utils.d.ts +0 -18
- package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/hono/constants.d.ts +0 -11
- package/build/types/integrations/tracing/hono/constants.d.ts.map +0 -1
- package/build/types/integrations/tracing/hono/index.d.ts +0 -60
- package/build/types/integrations/tracing/hono/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/hono/instrumentation.d.ts +0 -55
- package/build/types/integrations/tracing/hono/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/hono/types.d.ts +0 -36
- package/build/types/integrations/tracing/hono/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/kafka/index.d.ts +0 -21
- package/build/types/integrations/tracing/kafka/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/kafka/vendored/instrumentation.d.ts +0 -15
- package/build/types/integrations/tracing/kafka/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/kafka/vendored/kafkajs-types.d.ts +0 -79
- package/build/types/integrations/tracing/kafka/vendored/kafkajs-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts +0 -54
- package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/kafka/vendored/utils.d.ts +0 -29
- package/build/types/integrations/tracing/kafka/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/knex/index.d.ts +0 -22
- package/build/types/integrations/tracing/knex/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts +0 -12
- package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +0 -7
- package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/knex/vendored/utils.d.ts +0 -9
- package/build/types/integrations/tracing/knex/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/koa/vendored/enums/AttributeNames.d.ts +0 -5
- package/build/types/integrations/tracing/koa/vendored/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts +0 -32
- package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts +0 -34
- package/build/types/integrations/tracing/koa/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/koa/vendored/types.d.ts +0 -13
- package/build/types/integrations/tracing/koa/vendored/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/koa/vendored/utils.d.ts +0 -15
- package/build/types/integrations/tracing/koa/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/langchain/index.d.ts +0 -101
- package/build/types/integrations/tracing/langchain/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/langchain/instrumentation.d.ts +0 -38
- package/build/types/integrations/tracing/langchain/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/langgraph/index.d.ts +0 -77
- package/build/types/integrations/tracing/langgraph/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/langgraph/instrumentation.d.ts +0 -19
- package/build/types/integrations/tracing/langgraph/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/lrumemoizer/index.d.ts +0 -21
- package/build/types/integrations/tracing/lrumemoizer/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts +0 -6
- package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongo/index.d.ts +0 -22
- package/build/types/integrations/tracing/mongo/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts +0 -11
- package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -62
- package/build/types/integrations/tracing/mongo/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongo/vendored/patches.d.ts +0 -15
- package/build/types/integrations/tracing/mongo/vendored/patches.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongo/vendored/utils.d.ts +0 -15
- package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongoose/index.d.ts +0 -22
- package/build/types/integrations/tracing/mongoose/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +0 -33
- package/build/types/integrations/tracing/mongoose/vendored/mongoose-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -18
- package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +0 -1
- package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts +0 -4
- package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql/index.d.ts +0 -22
- package/build/types/integrations/tracing/mysql/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts +0 -14
- package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts +0 -78
- package/build/types/integrations/tracing/mysql/vendored/mysql-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts +0 -19
- package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql/vendored/utils.d.ts +0 -22
- package/build/types/integrations/tracing/mysql/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql2/index.d.ts +0 -22
- package/build/types/integrations/tracing/mysql2/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts +0 -9
- package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql2/vendored/mysql2-types.d.ts +0 -39
- package/build/types/integrations/tracing/mysql2/vendored/mysql2-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -3
- package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts +0 -25
- package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/openai/index.d.ts +0 -62
- package/build/types/integrations/tracing/openai/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/openai/instrumentation.d.ts +0 -26
- package/build/types/integrations/tracing/openai/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/index.d.ts +0 -26
- package/build/types/integrations/tracing/postgres/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -6
- package/build/types/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/enums/SpanNames.d.ts +0 -6
- package/build/types/integrations/tracing/postgres/vendored/enums/SpanNames.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts +0 -12
- package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -33
- package/build/types/integrations/tracing/postgres/vendored/internal-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/pg-pool-types.d.ts +0 -20
- package/build/types/integrations/tracing/postgres/vendored/pg-pool-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/pg-types.d.ts +0 -54
- package/build/types/integrations/tracing/postgres/vendored/pg-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +0 -13
- package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/types.d.ts +0 -11
- package/build/types/integrations/tracing/postgres/vendored/types.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgres/vendored/utils.d.ts +0 -56
- package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/postgresjs.d.ts +0 -103
- package/build/types/integrations/tracing/postgresjs.d.ts.map +0 -1
- package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +0 -10
- package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts +0 -16
- package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
- package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/tedious/index.d.ts +0 -22
- package/build/types/integrations/tracing/tedious/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts +0 -11
- package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts +0 -19
- package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/tedious/vendored/tedious-types.d.ts +0 -21
- package/build/types/integrations/tracing/tedious/vendored/tedious-types.d.ts.map +0 -1
- package/build/types/integrations/tracing/tedious/vendored/utils.d.ts +0 -9
- package/build/types/integrations/tracing/tedious/vendored/utils.d.ts.map +0 -1
- package/build/types/integrations/tracing/vercelai/constants.d.ts +0 -2
- package/build/types/integrations/tracing/vercelai/constants.d.ts.map +0 -1
- package/build/types/integrations/tracing/vercelai/index.d.ts +0 -44
- package/build/types/integrations/tracing/vercelai/index.d.ts.map +0 -1
- package/build/types/integrations/tracing/vercelai/instrumentation.d.ts +0 -56
- package/build/types/integrations/tracing/vercelai/instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/vercelai/types.d.ts +0 -50
- package/build/types/integrations/tracing/vercelai/types.d.ts.map +0 -1
- package/build/types/preload.d.ts +0 -2
- package/build/types/preload.d.ts.map +0 -1
- package/build/types/sdk/diagnosticsChannelInjection.d.ts +0 -41
- package/build/types/sdk/diagnosticsChannelInjection.d.ts.map +0 -1
- package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +0 -37
- package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +0 -1
- package/build/types/utils/setHttpServerSpanRouteAttribute.d.ts +0 -9
- package/build/types/utils/setHttpServerSpanRouteAttribute.d.ts.map +0 -1
- package/build/types-ts3.8/debug-build.d.ts +0 -7
- package/build/types-ts3.8/index.d.ts +0 -44
- package/build/types-ts3.8/init.d.ts +0 -2
- package/build/types-ts3.8/integrations/featureFlagShims/growthbook.d.ts +0 -6
- package/build/types-ts3.8/integrations/featureFlagShims/index.d.ts +0 -6
- package/build/types-ts3.8/integrations/featureFlagShims/launchDarkly.d.ts +0 -12
- package/build/types-ts3.8/integrations/featureFlagShims/openFeature.d.ts +0 -25
- package/build/types-ts3.8/integrations/featureFlagShims/statsig.d.ts +0 -8
- package/build/types-ts3.8/integrations/featureFlagShims/unleash.d.ts +0 -8
- package/build/types-ts3.8/integrations/fs/index.d.ts +0 -14
- package/build/types-ts3.8/integrations/fs/vendored/constants.d.ts +0 -5
- package/build/types-ts3.8/integrations/fs/vendored/instrumentation.d.ts +0 -3
- package/build/types-ts3.8/integrations/fs/vendored/types.d.ts +0 -23
- package/build/types-ts3.8/integrations/fs/vendored/utils.d.ts +0 -15
- package/build/types-ts3.8/integrations/http.d.ts +0 -134
- package/build/types-ts3.8/integrations/node-fetch.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/InstrumentationNodeModuleFile.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/amqplib/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/amqplib-types.d.ts +0 -44
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/instrumentation.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/patches.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -23
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/types.d.ts +0 -49
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/utils.d.ts +0 -42
- package/build/types-ts3.8/integrations/tracing/anthropic-ai/index.d.ts +0 -62
- package/build/types-ts3.8/integrations/tracing/anthropic-ai/instrumentation.d.ts +0 -19
- package/build/types-ts3.8/integrations/tracing/connect/index.d.ts +0 -48
- package/build/types-ts3.8/integrations/tracing/connect/vendored/enums/AttributeNames.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/connect/vendored/instrumentation.d.ts +0 -18
- package/build/types-ts3.8/integrations/tracing/connect/vendored/internal-types.d.ts +0 -36
- package/build/types-ts3.8/integrations/tracing/connect/vendored/utils.d.ts +0 -5
- package/build/types-ts3.8/integrations/tracing/dataloader/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/dataloader/vendored/instrumentation.d.ts +0 -18
- package/build/types-ts3.8/integrations/tracing/dataloader/vendored/types.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/express.d.ts +0 -19
- package/build/types-ts3.8/integrations/tracing/fastify/index.d.ts +0 -119
- package/build/types-ts3.8/integrations/tracing/fastify/types.d.ts +0 -33
- package/build/types-ts3.8/integrations/tracing/fastify/v3/constants.d.ts +0 -3
- package/build/types-ts3.8/integrations/tracing/fastify/v3/enums/AttributeNames.d.ts +0 -15
- package/build/types-ts3.8/integrations/tracing/fastify/v3/instrumentation.d.ts +0 -16
- package/build/types-ts3.8/integrations/tracing/fastify/v3/internal-types.d.ts +0 -7
- package/build/types-ts3.8/integrations/tracing/fastify/v3/types.d.ts +0 -21
- package/build/types-ts3.8/integrations/tracing/fastify/v3/utils.d.ts +0 -28
- package/build/types-ts3.8/integrations/tracing/firebase/firebase.d.ts +0 -8
- package/build/types-ts3.8/integrations/tracing/firebase/index.d.ts +0 -2
- package/build/types-ts3.8/integrations/tracing/firebase/otel/firebaseInstrumentation.d.ts +0 -14
- package/build/types-ts3.8/integrations/tracing/firebase/otel/index.d.ts +0 -3
- package/build/types-ts3.8/integrations/tracing/firebase/otel/patches/firestore.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/firebase/otel/patches/functions.d.ts +0 -18
- package/build/types-ts3.8/integrations/tracing/firebase/otel/types.d.ts +0 -100
- package/build/types-ts3.8/integrations/tracing/genericPool/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +0 -5
- package/build/types-ts3.8/integrations/tracing/genericPool/vendored/instrumentation.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/google-genai/index.d.ts +0 -62
- package/build/types-ts3.8/integrations/tracing/google-genai/instrumentation.d.ts +0 -20
- package/build/types-ts3.8/integrations/tracing/graphql/index.d.ts +0 -50
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/enum.d.ts +0 -38
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/enums/AttributeNames.d.ts +0 -10
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/graphql-types.d.ts +0 -2
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/instrumentation.d.ts +0 -25
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/internal-types.d.ts +0 -63
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/symbols.d.ts +0 -3
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/types.d.ts +0 -33
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/utils.d.ts +0 -14
- package/build/types-ts3.8/integrations/tracing/hapi/index.d.ts +0 -52
- package/build/types-ts3.8/integrations/tracing/hapi/types.d.ts +0 -166
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/enums/AttributeNames.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/hapi-types.d.ts +0 -70
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/instrumentation.d.ts +0 -72
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/internal-types.d.ts +0 -32
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/utils.d.ts +0 -18
- package/build/types-ts3.8/integrations/tracing/hono/constants.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/hono/index.d.ts +0 -60
- package/build/types-ts3.8/integrations/tracing/hono/instrumentation.d.ts +0 -55
- package/build/types-ts3.8/integrations/tracing/hono/types.d.ts +0 -36
- package/build/types-ts3.8/integrations/tracing/index.d.ts +0 -12
- package/build/types-ts3.8/integrations/tracing/kafka/index.d.ts +0 -21
- package/build/types-ts3.8/integrations/tracing/kafka/vendored/instrumentation.d.ts +0 -15
- package/build/types-ts3.8/integrations/tracing/kafka/vendored/kafkajs-types.d.ts +0 -79
- package/build/types-ts3.8/integrations/tracing/kafka/vendored/semconv.d.ts +0 -54
- package/build/types-ts3.8/integrations/tracing/kafka/vendored/utils.d.ts +0 -29
- package/build/types-ts3.8/integrations/tracing/knex/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/knex/vendored/instrumentation.d.ts +0 -12
- package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +0 -7
- package/build/types-ts3.8/integrations/tracing/knex/vendored/utils.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/koa/index.d.ts +0 -72
- package/build/types-ts3.8/integrations/tracing/koa/vendored/enums/AttributeNames.d.ts +0 -5
- package/build/types-ts3.8/integrations/tracing/koa/vendored/instrumentation.d.ts +0 -32
- package/build/types-ts3.8/integrations/tracing/koa/vendored/internal-types.d.ts +0 -34
- package/build/types-ts3.8/integrations/tracing/koa/vendored/types.d.ts +0 -13
- package/build/types-ts3.8/integrations/tracing/koa/vendored/utils.d.ts +0 -15
- package/build/types-ts3.8/integrations/tracing/langchain/index.d.ts +0 -101
- package/build/types-ts3.8/integrations/tracing/langchain/instrumentation.d.ts +0 -38
- package/build/types-ts3.8/integrations/tracing/langgraph/index.d.ts +0 -77
- package/build/types-ts3.8/integrations/tracing/langgraph/instrumentation.d.ts +0 -19
- package/build/types-ts3.8/integrations/tracing/lrumemoizer/index.d.ts +0 -21
- package/build/types-ts3.8/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/mongo/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/mongo/vendored/instrumentation.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/mongo/vendored/internal-types.d.ts +0 -62
- package/build/types-ts3.8/integrations/tracing/mongo/vendored/patches.d.ts +0 -15
- package/build/types-ts3.8/integrations/tracing/mongo/vendored/utils.d.ts +0 -15
- package/build/types-ts3.8/integrations/tracing/mongoose/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose-types.d.ts +0 -33
- package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -18
- package/build/types-ts3.8/integrations/tracing/mongoose/vendored/utils.d.ts +0 -4
- package/build/types-ts3.8/integrations/tracing/mysql/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/mysql/vendored/instrumentation.d.ts +0 -14
- package/build/types-ts3.8/integrations/tracing/mysql/vendored/mysql-types.d.ts +0 -78
- package/build/types-ts3.8/integrations/tracing/mysql/vendored/semconv.d.ts +0 -19
- package/build/types-ts3.8/integrations/tracing/mysql/vendored/utils.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/mysql2/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/mysql2/vendored/instrumentation.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/mysql2/vendored/mysql2-types.d.ts +0 -39
- package/build/types-ts3.8/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -3
- package/build/types-ts3.8/integrations/tracing/mysql2/vendored/utils.d.ts +0 -25
- package/build/types-ts3.8/integrations/tracing/openai/index.d.ts +0 -62
- package/build/types-ts3.8/integrations/tracing/openai/instrumentation.d.ts +0 -26
- package/build/types-ts3.8/integrations/tracing/postgres/index.d.ts +0 -26
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/enums/AttributeNames.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/enums/SpanNames.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/instrumentation.d.ts +0 -12
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/internal-types.d.ts +0 -33
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/pg-pool-types.d.ts +0 -20
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/pg-types.d.ts +0 -54
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +0 -13
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/types.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/utils.d.ts +0 -56
- package/build/types-ts3.8/integrations/tracing/postgresjs.d.ts +0 -103
- package/build/types-ts3.8/integrations/tracing/redis/cache.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +0 -28
- package/build/types-ts3.8/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts +0 -10
- package/build/types-ts3.8/integrations/tracing/redis/vendored/redis-instrumentation.d.ts +0 -16
- package/build/types-ts3.8/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
- package/build/types-ts3.8/integrations/tracing/redis/vendored/types.d.ts +0 -24
- package/build/types-ts3.8/integrations/tracing/tedious/index.d.ts +0 -22
- package/build/types-ts3.8/integrations/tracing/tedious/vendored/instrumentation.d.ts +0 -11
- package/build/types-ts3.8/integrations/tracing/tedious/vendored/semconv.d.ts +0 -19
- package/build/types-ts3.8/integrations/tracing/tedious/vendored/tedious-types.d.ts +0 -21
- package/build/types-ts3.8/integrations/tracing/tedious/vendored/utils.d.ts +0 -9
- package/build/types-ts3.8/integrations/tracing/vercelai/constants.d.ts +0 -2
- package/build/types-ts3.8/integrations/tracing/vercelai/index.d.ts +0 -44
- package/build/types-ts3.8/integrations/tracing/vercelai/instrumentation.d.ts +0 -56
- package/build/types-ts3.8/integrations/tracing/vercelai/types.d.ts +0 -50
- package/build/types-ts3.8/preload.d.ts +0 -2
- package/build/types-ts3.8/sdk/diagnosticsChannelInjection.d.ts +0 -41
- package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +0 -37
- package/build/types-ts3.8/sdk/index.d.ts +0 -36
- package/build/types-ts3.8/sdk/initOtel.d.ts +0 -30
- package/build/types-ts3.8/types.d.ts +0 -89
- package/build/types-ts3.8/utils/redisCache.d.ts +0 -17
- package/build/types-ts3.8/utils/setHttpServerSpanRouteAttribute.d.ts +0 -9
package/build/cjs/index.js
CHANGED
|
@@ -1,90 +1,95 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const index$
|
|
3
|
+
const index$6 = require('./integrations/http/index.js');
|
|
4
|
+
const index$8 = require('./integrations/node-fetch/index.js');
|
|
5
|
+
const index$3 = require('./integrations/fs/index.js');
|
|
6
6
|
const express = require('./integrations/tracing/express.js');
|
|
7
|
-
const index$
|
|
8
|
-
const
|
|
9
|
-
const index$
|
|
10
|
-
const index$i = require('./integrations/tracing/lrumemoizer/index.js');
|
|
11
|
-
const index$j = require('./integrations/tracing/mongo/index.js');
|
|
12
|
-
const index$k = require('./integrations/tracing/mongoose/index.js');
|
|
13
|
-
const index$m = require('./integrations/tracing/mysql/index.js');
|
|
14
|
-
const index$l = require('./integrations/tracing/mysql2/index.js');
|
|
15
|
-
const index$p = require('./integrations/tracing/redis/index.js');
|
|
16
|
-
const index$o = require('./integrations/tracing/postgres/index.js');
|
|
17
|
-
const postgresjs = require('./integrations/tracing/postgresjs.js');
|
|
7
|
+
const index$2 = require('./integrations/tracing/fastify/index.js');
|
|
8
|
+
const orchestrion = require('@sentry/server-utils/orchestrion');
|
|
9
|
+
const index$9 = require('./integrations/tracing/redis/index.js');
|
|
18
10
|
const serverUtils = require('@sentry/server-utils');
|
|
19
|
-
const index$
|
|
20
|
-
const index$
|
|
21
|
-
const index$f = require('./integrations/tracing/koa/index.js');
|
|
22
|
-
const index$3 = require('./integrations/tracing/connect/index.js');
|
|
23
|
-
const index$e = require('./integrations/tracing/knex/index.js');
|
|
24
|
-
const index$q = require('./integrations/tracing/tedious/index.js');
|
|
25
|
-
const index$7 = require('./integrations/tracing/genericPool/index.js');
|
|
26
|
-
const index$4 = require('./integrations/tracing/dataloader/index.js');
|
|
27
|
-
const index = require('./integrations/tracing/amqplib/index.js');
|
|
28
|
-
const index$r = require('./integrations/tracing/vercelai/index.js');
|
|
29
|
-
const index$n = require('./integrations/tracing/openai/index.js');
|
|
30
|
-
const index$1 = require('./integrations/tracing/anthropic-ai/index.js');
|
|
31
|
-
const index$9 = require('./integrations/tracing/google-genai/index.js');
|
|
32
|
-
const index$g = require('./integrations/tracing/langchain/index.js');
|
|
33
|
-
const index$h = require('./integrations/tracing/langgraph/index.js');
|
|
11
|
+
const index$a = require('./integrations/tracing/hapi/index.js');
|
|
12
|
+
const index$b = require('./integrations/tracing/koa/index.js');
|
|
34
13
|
const launchDarkly = require('./integrations/featureFlagShims/launchDarkly.js');
|
|
35
14
|
const openFeature = require('./integrations/featureFlagShims/openFeature.js');
|
|
36
15
|
const statsig = require('./integrations/featureFlagShims/statsig.js');
|
|
37
16
|
const unleash = require('./integrations/featureFlagShims/unleash.js');
|
|
38
17
|
const growthbook = require('./integrations/featureFlagShims/growthbook.js');
|
|
39
|
-
const
|
|
40
|
-
const index$2 = require('./sdk/index.js');
|
|
41
|
-
const experimentalUseDiagnosticsChannelInjection = require('./sdk/experimentalUseDiagnosticsChannelInjection.js');
|
|
42
|
-
const diagnosticsChannelInjection = require('./sdk/diagnosticsChannelInjection.js');
|
|
18
|
+
const index$5 = require('./sdk/index.js');
|
|
43
19
|
const initOtel = require('./sdk/initOtel.js');
|
|
44
|
-
const index$
|
|
20
|
+
const index$4 = require('./integrations/tracing/index.js');
|
|
45
21
|
const opentelemetry = require('@sentry/opentelemetry');
|
|
46
22
|
const core = require('@sentry/core');
|
|
47
|
-
const
|
|
23
|
+
const exports$1 = require('./logs/exports.js');
|
|
24
|
+
const childProcess = require('./integrations/childProcess.js');
|
|
25
|
+
const console = require('./integrations/console.js');
|
|
26
|
+
const context = require('./integrations/context.js');
|
|
27
|
+
const contextlines = require('./integrations/contextlines.js');
|
|
28
|
+
const index$7 = require('./integrations/local-variables/index.js');
|
|
29
|
+
const modules = require('./integrations/modules.js');
|
|
30
|
+
const nodeRuntimeMetrics = require('./integrations/nodeRuntimeMetrics.js');
|
|
31
|
+
const onuncaughtexception = require('./integrations/onuncaughtexception.js');
|
|
32
|
+
const onunhandledrejection = require('./integrations/onunhandledrejection.js');
|
|
33
|
+
const pino = require('./integrations/pino.js');
|
|
34
|
+
const spotlight = require('./integrations/spotlight.js');
|
|
35
|
+
const systemError = require('./integrations/systemError.js');
|
|
36
|
+
const winston = require('./integrations/winston.js');
|
|
37
|
+
const index$1 = require('./cron/index.js');
|
|
38
|
+
const nodeVersion = require('./nodeVersion.js');
|
|
39
|
+
const api = require('./sdk/api.js');
|
|
40
|
+
const http = require('./transports/http.js');
|
|
41
|
+
const module$1 = require('./utils/module.js');
|
|
42
|
+
const httpServerIntegration = require('./integrations/http/httpServerIntegration.js');
|
|
43
|
+
const httpServerSpansIntegration = require('./integrations/http/httpServerSpansIntegration.js');
|
|
44
|
+
const processSession = require('./integrations/processSession.js');
|
|
45
|
+
const client = require('./sdk/client.js');
|
|
46
|
+
const index = require('./integrations/anr/index.js');
|
|
48
47
|
|
|
49
48
|
|
|
50
49
|
|
|
51
|
-
exports.httpIntegration =
|
|
52
|
-
exports.nativeNodeFetchIntegration =
|
|
53
|
-
exports.fsIntegration = index$
|
|
54
|
-
exports.expressIntegration = express.expressIntegration;
|
|
50
|
+
exports.httpIntegration = index$6.httpIntegration;
|
|
51
|
+
exports.nativeNodeFetchIntegration = index$8.nativeNodeFetchIntegration;
|
|
52
|
+
exports.fsIntegration = index$3.fsIntegration;
|
|
55
53
|
exports.setupExpressErrorHandler = express.setupExpressErrorHandler;
|
|
56
|
-
exports.fastifyIntegration = index$
|
|
57
|
-
exports.setupFastifyErrorHandler = index$
|
|
58
|
-
exports.
|
|
59
|
-
exports.
|
|
60
|
-
exports.
|
|
61
|
-
exports.
|
|
62
|
-
exports.
|
|
63
|
-
exports.
|
|
64
|
-
exports.
|
|
65
|
-
exports.
|
|
66
|
-
exports.
|
|
67
|
-
exports.
|
|
54
|
+
exports.fastifyIntegration = index$2.fastifyIntegration;
|
|
55
|
+
exports.setupFastifyErrorHandler = index$2.setupFastifyErrorHandler;
|
|
56
|
+
exports.amqplibIntegration = orchestrion.amqplibIntegration;
|
|
57
|
+
exports.anthropicAIIntegration = orchestrion.anthropicIntegration;
|
|
58
|
+
exports.dataloaderIntegration = orchestrion.dataloaderIntegration;
|
|
59
|
+
exports.expressIntegration = orchestrion.expressIntegration;
|
|
60
|
+
exports.firebaseIntegration = orchestrion.firebaseIntegration;
|
|
61
|
+
exports.genericPoolIntegration = orchestrion.genericPoolIntegration;
|
|
62
|
+
exports.googleGenAIIntegration = orchestrion.googleGenAIIntegration;
|
|
63
|
+
exports.graphqlIntegration = orchestrion.graphqlDiagnosticsIntegration;
|
|
64
|
+
exports.hapiIntegration = orchestrion.hapiIntegration;
|
|
65
|
+
exports.kafkaIntegration = orchestrion.kafkajsIntegration;
|
|
66
|
+
exports.knexIntegration = orchestrion.knexIntegration;
|
|
67
|
+
exports.koaIntegration = orchestrion.koaIntegration;
|
|
68
|
+
exports.langChainIntegration = orchestrion.langChainIntegration;
|
|
69
|
+
exports.langGraphIntegration = orchestrion.langGraphIntegration;
|
|
70
|
+
exports.lruMemoizerIntegration = orchestrion.lruMemoizerIntegration;
|
|
71
|
+
exports.mongoIntegration = orchestrion.mongodbIntegration;
|
|
72
|
+
exports.mongooseIntegration = orchestrion.mongooseIntegration;
|
|
73
|
+
exports.mysql2Integration = orchestrion.mysql2Integration;
|
|
74
|
+
exports.mysqlIntegration = orchestrion.mysqlIntegration;
|
|
75
|
+
exports.openAIIntegration = orchestrion.openaiIntegration;
|
|
76
|
+
exports.postgresIntegration = orchestrion.postgresIntegration;
|
|
77
|
+
exports.postgresJsIntegration = orchestrion.postgresJsIntegration;
|
|
78
|
+
exports.tediousIntegration = orchestrion.tediousIntegration;
|
|
79
|
+
exports.vercelAIIntegration = orchestrion.vercelAiIntegration;
|
|
80
|
+
exports.redisIntegration = index$9.redisIntegration;
|
|
81
|
+
exports.createLangChainCallbackHandler = serverUtils.createLangChainCallbackHandler;
|
|
82
|
+
exports.getOtlpTracesEndpoint = serverUtils.getOtlpTracesEndpoint;
|
|
83
|
+
exports.instrumentAnthropicAiClient = serverUtils.instrumentAnthropicAiClient;
|
|
84
|
+
exports.instrumentGoogleGenAIClient = serverUtils.instrumentGoogleGenAIClient;
|
|
85
|
+
exports.instrumentLangChainEmbeddings = serverUtils.instrumentLangChainEmbeddings;
|
|
86
|
+
exports.instrumentOpenAiClient = serverUtils.instrumentOpenAiClient;
|
|
87
|
+
exports.instrumentStateGraph = serverUtils.instrumentStateGraph;
|
|
88
|
+
exports.instrumentStateGraphCompile = serverUtils.instrumentStateGraphCompile;
|
|
89
|
+
exports.otlpIntegration = serverUtils.otlpIntegration;
|
|
68
90
|
exports.prismaIntegration = serverUtils.prismaIntegration;
|
|
69
|
-
exports.
|
|
70
|
-
exports.
|
|
71
|
-
exports.honoIntegration = index$c.honoIntegration;
|
|
72
|
-
exports.setupHonoErrorHandler = index$c.setupHonoErrorHandler;
|
|
73
|
-
exports.koaIntegration = index$f.koaIntegration;
|
|
74
|
-
exports.setupKoaErrorHandler = index$f.setupKoaErrorHandler;
|
|
75
|
-
exports.connectIntegration = index$3.connectIntegration;
|
|
76
|
-
exports.setupConnectErrorHandler = index$3.setupConnectErrorHandler;
|
|
77
|
-
exports.knexIntegration = index$e.knexIntegration;
|
|
78
|
-
exports.tediousIntegration = index$q.tediousIntegration;
|
|
79
|
-
exports.genericPoolIntegration = index$7.genericPoolIntegration;
|
|
80
|
-
exports.dataloaderIntegration = index$4.dataloaderIntegration;
|
|
81
|
-
exports.amqplibIntegration = index.amqplibIntegration;
|
|
82
|
-
exports.vercelAIIntegration = index$r.vercelAIIntegration;
|
|
83
|
-
exports.openAIIntegration = index$n.openAIIntegration;
|
|
84
|
-
exports.anthropicAIIntegration = index$1.anthropicAIIntegration;
|
|
85
|
-
exports.googleGenAIIntegration = index$9.googleGenAIIntegration;
|
|
86
|
-
exports.langChainIntegration = index$g.langChainIntegration;
|
|
87
|
-
exports.langGraphIntegration = index$h.langGraphIntegration;
|
|
91
|
+
exports.setupHapiErrorHandler = index$a.setupHapiErrorHandler;
|
|
92
|
+
exports.setupKoaErrorHandler = index$b.setupKoaErrorHandler;
|
|
88
93
|
exports.buildLaunchDarklyFlagUsedHandler = launchDarkly.buildLaunchDarklyFlagUsedHandlerShim;
|
|
89
94
|
exports.launchDarklyIntegration = launchDarkly.launchDarklyIntegrationShim;
|
|
90
95
|
exports.OpenFeatureIntegrationHook = openFeature.OpenFeatureIntegrationHookShim;
|
|
@@ -92,19 +97,13 @@ exports.openFeatureIntegration = openFeature.openFeatureIntegrationShim;
|
|
|
92
97
|
exports.statsigIntegration = statsig.statsigIntegrationShim;
|
|
93
98
|
exports.unleashIntegration = unleash.unleashIntegrationShim;
|
|
94
99
|
exports.growthbookIntegration = growthbook.growthbookIntegrationShim;
|
|
95
|
-
exports.
|
|
96
|
-
exports.
|
|
97
|
-
exports.
|
|
98
|
-
exports.
|
|
99
|
-
exports.init = index$2.init;
|
|
100
|
-
exports.initWithoutDefaultIntegrations = index$2.initWithoutDefaultIntegrations;
|
|
101
|
-
exports.diagnosticsChannelInjectionIntegrations = experimentalUseDiagnosticsChannelInjection.diagnosticsChannelInjectionIntegrations;
|
|
102
|
-
exports.experimentalUseDiagnosticsChannelInjection = experimentalUseDiagnosticsChannelInjection.experimentalUseDiagnosticsChannelInjection;
|
|
103
|
-
exports.isDiagnosticsChannelInjectionEnabled = diagnosticsChannelInjection.isDiagnosticsChannelInjectionEnabled;
|
|
100
|
+
exports.getDefaultIntegrations = index$5.getDefaultIntegrations;
|
|
101
|
+
exports.getDefaultIntegrationsWithoutPerformance = index$5.getDefaultIntegrationsWithoutPerformance;
|
|
102
|
+
exports.init = index$5.init;
|
|
103
|
+
exports.initWithoutDefaultIntegrations = index$5.initWithoutDefaultIntegrations;
|
|
104
104
|
exports.initOpenTelemetry = initOtel.initOpenTelemetry;
|
|
105
|
-
exports.
|
|
106
|
-
exports.
|
|
107
|
-
exports.setNodeAsyncContextStrategy = opentelemetry.setOpenTelemetryContextAsyncContextStrategy;
|
|
105
|
+
exports.getAutoPerformanceIntegrations = index$4.getAutoPerformanceIntegrations;
|
|
106
|
+
exports.setOpenTelemetryContextAsyncContextStrategy = opentelemetry.setOpenTelemetryContextAsyncContextStrategy;
|
|
108
107
|
exports.SDK_VERSION = core.SDK_VERSION;
|
|
109
108
|
exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = core.SEMANTIC_ATTRIBUTE_SENTRY_OP;
|
|
110
109
|
exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;
|
|
@@ -126,7 +125,6 @@ exports.close = core.close;
|
|
|
126
125
|
exports.consoleLoggingIntegration = core.consoleLoggingIntegration;
|
|
127
126
|
exports.continueTrace = core.continueTrace;
|
|
128
127
|
exports.createConsolaReporter = core.createConsolaReporter;
|
|
129
|
-
exports.createLangChainCallbackHandler = core.createLangChainCallbackHandler;
|
|
130
128
|
exports.createTransport = core.createTransport;
|
|
131
129
|
exports.dedupeIntegration = core.dedupeIntegration;
|
|
132
130
|
exports.endSession = core.endSession;
|
|
@@ -147,19 +145,12 @@ exports.getSpanStatusFromHttpCode = core.getSpanStatusFromHttpCode;
|
|
|
147
145
|
exports.getTraceData = core.getTraceData;
|
|
148
146
|
exports.getTraceMetaTags = core.getTraceMetaTags;
|
|
149
147
|
exports.httpHeadersToSpanAttributes = core.httpHeadersToSpanAttributes;
|
|
150
|
-
exports.inboundFiltersIntegration = core.inboundFiltersIntegration;
|
|
151
|
-
exports.instrumentAnthropicAiClient = core.instrumentAnthropicAiClient;
|
|
152
|
-
exports.instrumentGoogleGenAIClient = core.instrumentGoogleGenAIClient;
|
|
153
|
-
exports.instrumentLangChainEmbeddings = core.instrumentLangChainEmbeddings;
|
|
154
|
-
exports.instrumentLangGraph = core.instrumentLangGraph;
|
|
155
|
-
exports.instrumentOpenAiClient = core.instrumentOpenAiClient;
|
|
156
|
-
exports.instrumentStateGraph = core.instrumentStateGraph;
|
|
157
|
-
exports.instrumentStateGraphCompile = core.instrumentStateGraphCompile;
|
|
158
148
|
exports.instrumentSupabaseClient = core.instrumentSupabaseClient;
|
|
159
149
|
exports.isEnabled = core.isEnabled;
|
|
160
150
|
exports.isInitialized = core.isInitialized;
|
|
161
151
|
exports.lastEventId = core.lastEventId;
|
|
162
152
|
exports.linkedErrorsIntegration = core.linkedErrorsIntegration;
|
|
153
|
+
exports.metrics = core.metrics;
|
|
163
154
|
exports.parameterize = core.parameterize;
|
|
164
155
|
exports.profiler = core.profiler;
|
|
165
156
|
exports.requestDataIntegration = core.requestDataIntegration;
|
|
@@ -194,38 +185,35 @@ exports.withActiveSpan = core.withActiveSpan;
|
|
|
194
185
|
exports.withIsolationScope = core.withIsolationScope;
|
|
195
186
|
exports.withMonitor = core.withMonitor;
|
|
196
187
|
exports.withScope = core.withScope;
|
|
188
|
+
exports.withStaticSpan = core.withStaticSpan;
|
|
189
|
+
exports.withStreamedSpan = core.withStreamedSpan;
|
|
197
190
|
exports.wrapMcpServerWithSentry = core.wrapMcpServerWithSentry;
|
|
198
191
|
exports.zodErrorsIntegration = core.zodErrorsIntegration;
|
|
199
|
-
exports.
|
|
200
|
-
exports.
|
|
201
|
-
exports.
|
|
202
|
-
exports.
|
|
203
|
-
exports.
|
|
204
|
-
exports.
|
|
205
|
-
exports.
|
|
206
|
-
exports.
|
|
207
|
-
exports.
|
|
208
|
-
exports.
|
|
209
|
-
exports.
|
|
210
|
-
exports.
|
|
211
|
-
exports.
|
|
212
|
-
exports.
|
|
213
|
-
exports.
|
|
214
|
-
exports.
|
|
215
|
-
exports.
|
|
216
|
-
exports.
|
|
217
|
-
exports.
|
|
218
|
-
exports.makeNodeTransport =
|
|
219
|
-
exports.
|
|
220
|
-
exports.
|
|
221
|
-
exports.
|
|
222
|
-
exports.
|
|
223
|
-
exports.
|
|
224
|
-
exports.
|
|
225
|
-
exports.
|
|
226
|
-
exports.processSessionIntegration = nodeCore.processSessionIntegration;
|
|
227
|
-
exports.spotlightIntegration = nodeCore.spotlightIntegration;
|
|
228
|
-
exports.systemErrorIntegration = nodeCore.systemErrorIntegration;
|
|
229
|
-
exports.validateOpenTelemetrySetup = nodeCore.validateOpenTelemetrySetup;
|
|
230
|
-
exports.withStreamedSpan = nodeCore.withStreamedSpan;
|
|
192
|
+
exports.logger = exports$1;
|
|
193
|
+
exports.childProcessIntegration = childProcess.childProcessIntegration;
|
|
194
|
+
exports.consoleIntegration = console.consoleIntegration;
|
|
195
|
+
exports.nodeContextIntegration = context.nodeContextIntegration;
|
|
196
|
+
exports.contextLinesIntegration = contextlines.contextLinesIntegration;
|
|
197
|
+
exports.localVariablesIntegration = index$7.localVariablesIntegration;
|
|
198
|
+
exports.modulesIntegration = modules.modulesIntegration;
|
|
199
|
+
exports._INTERNAL_normalizeCollectionInterval = nodeRuntimeMetrics._INTERNAL_normalizeCollectionInterval;
|
|
200
|
+
exports.nodeRuntimeMetricsIntegration = nodeRuntimeMetrics.nodeRuntimeMetricsIntegration;
|
|
201
|
+
exports.onUncaughtExceptionIntegration = onuncaughtexception.onUncaughtExceptionIntegration;
|
|
202
|
+
exports.onUnhandledRejectionIntegration = onunhandledrejection.onUnhandledRejectionIntegration;
|
|
203
|
+
exports.pinoIntegration = pino.pinoIntegration;
|
|
204
|
+
exports.spotlightIntegration = spotlight.spotlightIntegration;
|
|
205
|
+
exports.systemErrorIntegration = systemError.systemErrorIntegration;
|
|
206
|
+
exports.createSentryWinstonTransport = winston.createSentryWinstonTransport;
|
|
207
|
+
exports.cron = index$1.cron;
|
|
208
|
+
exports.NODE_VERSION = nodeVersion.NODE_VERSION;
|
|
209
|
+
exports.defaultStackParser = api.defaultStackParser;
|
|
210
|
+
exports.getSentryRelease = api.getSentryRelease;
|
|
211
|
+
exports.makeNodeTransport = http.makeNodeTransport;
|
|
212
|
+
exports.createGetModuleFromFilename = module$1.createGetModuleFromFilename;
|
|
213
|
+
exports.httpServerIntegration = httpServerIntegration.httpServerIntegration;
|
|
214
|
+
exports.httpServerSpansIntegration = httpServerSpansIntegration.httpServerSpansIntegration;
|
|
215
|
+
exports.processSessionIntegration = processSession.processSessionIntegration;
|
|
216
|
+
exports.NodeClient = client.NodeClient;
|
|
217
|
+
exports.anrIntegration = index.anrIntegration;
|
|
218
|
+
exports.disableAnrDetectionForCallback = index.disableAnrDetectionForCallback;
|
|
231
219
|
//# sourceMappingURL=index.js.map
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
const util = require('node:util');
|
|
4
|
+
const node_worker_threads = require('node:worker_threads');
|
|
5
|
+
const core = require('@sentry/core');
|
|
6
|
+
const debug = require('../../utils/debug.js');
|
|
7
|
+
|
|
8
|
+
const { isPromise } = util.types;
|
|
9
|
+
const base64WorkerScript = "LyohIEBzZW50cnkvbm9kZSAxMS4wLjAtYWxwaGEuMCAoNDc0YTVkYykgfCBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0ICovCmltcG9ydHtTZXNzaW9uIGFzIHR9ZnJvbSJub2RlOmluc3BlY3RvciI7aW1wb3J0e3dvcmtlckRhdGEgYXMgbixwYXJlbnRQb3J0IGFzIGV9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtpbXBvcnR7cG9zaXggYXMgcixzZXAgYXMgb31mcm9tIm5vZGU6cGF0aCI7aW1wb3J0KmFzIGkgZnJvbSJub2RlOmh0dHAiO2ltcG9ydCphcyBzIGZyb20ibm9kZTpodHRwcyI7aW1wb3J0e1JlYWRhYmxlIGFzIGN9ZnJvbSJub2RlOnN0cmVhbSI7aW1wb3J0e2NyZWF0ZUd6aXAgYXMgdX1mcm9tIm5vZGU6emxpYiI7aW1wb3J0KmFzIGEgZnJvbSJub2RlOm5ldCI7aW1wb3J0KmFzIGYgZnJvbSJub2RlOnRscyI7Y29uc3QgaD0idW5kZWZpbmVkIj09dHlwZW9mIF9fU0VOVFJZX0RFQlVHX198fF9fU0VOVFJZX0RFQlVHX18scD1nbG9iYWxUaGlzLGQ9IjExLjAuMC1hbHBoYS4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIGcocCkscH1mdW5jdGlvbiBnKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBtKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIF8oKXtyZXR1cm4gUygpLmVuYWJsZWR9ZnVuY3Rpb24gdih0LC4uLm4pe2gmJl8oKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIFMoKXtyZXR1cm4gaD9tKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3Qgdz17ZW5hYmxlOmZ1bmN0aW9uKCl7UygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXtTKCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOl8sbG9nOmZ1bmN0aW9uKC4uLnQpe3YoImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7digid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe3YoImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIHgodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IEU9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gayh0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gQm9vbGVhbih0Py50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50aGVuKX1mdW5jdGlvbiBqKHQsbil7dHJ5e3JldHVybiB0IGluc3RhbmNlb2Ygbn1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gUih0KXtpZihmdW5jdGlvbih0KXtzd2l0Y2goTi5jYWxsKHQpKXtjYXNlIltvYmplY3QgRXJyb3JdIjpjYXNlIltvYmplY3QgRXhjZXB0aW9uXSI6Y2FzZSJbb2JqZWN0IERPTUV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBXZWJBc3NlbWJseS5FeGNlcHRpb25dIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiBqKHQsRXJyb3IpfX0odCkpcmV0dXJue21lc3NhZ2U6dC5tZXNzYWdlLG5hbWU6dC5uYW1lLHN0YWNrOnQuc3RhY2ssLi4uQSh0KX07aWYobj10LCJ1bmRlZmluZWQiIT10eXBlb2YgRXZlbnQmJmoobixFdmVudCkpe2NvbnN0e3R5cGU6bix0YXJnZXQ6ZSxjdXJyZW50VGFyZ2V0OnIsZGV0YWlsOm99PXQ7cmV0dXJue3R5cGU6bix0YXJnZXQ6ZSxjdXJyZW50VGFyZ2V0OnIsLi4ubz97ZGV0YWlsOm99Ont9LC4uLkEodCl9fXZhciBuO3JldHVybiB0fWZ1bmN0aW9uIEEodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZihuPXQpJiZudWxsIT09bj9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9O3ZhciBufWxldCBJO2Z1bmN0aW9uIFQodCl7aWYodm9pZCAwIT09SSlyZXR1cm4gST9JKHQpOnQoKTtjb25zdCBuPVN5bWJvbC5mb3IoIl9fU0VOVFJZX1NBRkVfUkFORE9NX0lEX1dSQVBQRVJfXyIpLGU9cDtyZXR1cm4gbiBpbiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtuXT8oST1lW25dLEkodCkpOihJPW51bGwsdCgpKX1mdW5jdGlvbiBPKCl7cmV0dXJuIFQoKCk9Pk1hdGgucmFuZG9tKCkpfWZ1bmN0aW9uIFAoKXtyZXR1cm4gVCgoKT0+RGF0ZS5ub3coKSl9Y29uc3QgRD1TeW1ib2wuZm9yKCJzZW50cnkuc2tpcE5vcm1hbGl6YXRpb24iKSxVPVN5bWJvbC5mb3IoInNlbnRyeS5vdmVycmlkZU5vcm1hbGl6YXRpb25EZXB0aCIpO2Z1bmN0aW9uIEIodCxuPTEwMCxlPTEvMCl7dHJ5e3JldHVybiBMKCIiLHQsbixlKX1jYXRjaCh0KXtyZXR1cm57RVJST1I6YCoqbm9uLXNlcmlhbGl6YWJsZSoqICgke3R9KWB9fX1mdW5jdGlvbiBMKHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmIU51bWJlci5pc0Zpbml0ZShuKSlyZXR1cm5gWyR7bn1dYDtpZigiZnVuY3Rpb24iPT10eXBlb2YgbilyZXR1cm5gW0Z1bmN0aW9uOiAke2Z1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQubmFtZXx8RX1jYXRjaHtyZXR1cm4gRX19KG4pfV1gO2lmKCJzeW1ib2wiPT10eXBlb2YgbilyZXR1cm5gWyR7U3RyaW5nKG4pfV1gO2lmKCJiaWdpbnQiPT10eXBlb2YgbilyZXR1cm5gW0JpZ0ludDogJHtTdHJpbmcobil9XWA7Y29uc3QgdD1mdW5jdGlvbih0KXtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gbj8uY29uc3RydWN0b3I/bi5jb25zdHJ1Y3Rvci5uYW1lOiJudWxsIHByb3RvdHlwZSJ9KG4pO3JldHVybmBbb2JqZWN0ICR7dH1dYH1jYXRjaCh0KXtyZXR1cm5gKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19KDAsbik7aWYoIWMuc3RhcnRzV2l0aCgiW29iamVjdCAiKSlyZXR1cm4gYztpZihmdW5jdGlvbih0KXtyZXR1cm4gQm9vbGVhbih0W0RdKX0obikpcmV0dXJuIG47Y29uc3QgdT1mdW5jdGlvbih0KXtjb25zdCBuPXRbVV07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuP246dm9pZCAwfShuKSxhPXZvaWQgMCE9PXU/dTplO2lmKDA9PT1hKXJldHVybiBjLnJlcGxhY2UoIm9iamVjdCAiLCIiKTtpZihpKG4pKXJldHVybiJbQ2lyY3VsYXIgfl0iO2NvbnN0IGY9bjtpZihmJiYiZnVuY3Rpb24iPT10eXBlb2YgZi50b0pTT04pdHJ5e3JldHVybiBMKCIiLGYudG9KU09OKCksYS0xLHIsbyl9Y2F0Y2h7fWNvbnN0IGg9QXJyYXkuaXNBcnJheShuKT9bXTp7fTtsZXQgcD0wO2NvbnN0IGQ9UihuKTtmb3IoY29uc3QgdCBpbiBkKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsdCkpY29udGludWU7aWYocD49cil7aFt0XT0iW01heFByb3BlcnRpZXMgfl0iO2JyZWFrfWNvbnN0IG49ZFt0XTtoW3RdPUwodCxuLGEtMSxyLG8pLHArK31yZXR1cm4gcyhuKSxofWZ1bmN0aW9uIE0odCxuKXtjb25zdCBlPW4ucmVwbGFjZSgvXFwvZywiLyIpLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCJcXCQmIik7bGV0IHI9dDt0cnl7cj1kZWNvZGVVUkkodCl9Y2F0Y2h7fXJldHVybiByLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC93ZWJwYWNrOlwvPy9nLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoYChmaWxlOi8vKT8vKiR7ZX0vKmAsImlnIiksImFwcDovLy8iKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWxldCBGO2Z1bmN0aW9uIEcodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBUKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEZ8fChGPSIxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCIpLEYucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqTygpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEooKXtyZXR1cm4gUCgpLzFlM31sZXQgVztmdW5jdGlvbiBZKCl7cmV0dXJuKFc/PyhXPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBKO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitUKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBIKHQpe2NvbnN0IG49WSgpLGU9e3NpZDpHKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJksoZSx0KSxlfWZ1bmN0aW9uIEsodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8WSgpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RygpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gWih0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09WihyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gcSgpe3JldHVybiBHKCl9ZnVuY3Rpb24gVigpe3JldHVybiBHKCkuc3Vic3RyaW5nKDE2KX1mdW5jdGlvbiBRKHQpe2lmKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmImRlcmVmImluIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlcmVmKXRyeXtyZXR1cm4gdC5kZXJlZigpfWNhdGNoe3JldHVybn1yZXR1cm4gdH19Y29uc3QgWD0iX3NlbnRyeVNwYW4iO2Z1bmN0aW9uIHR0KHQsbil7bj9mdW5jdGlvbih0LG4sZSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2h7aCYmdy5sb2coYEZhaWxlZCB0byBhZGQgbm9uLWVudW1lcmFibGUgcHJvcGVydHkgIiR7U3RyaW5nKG4pfSIgdG8gb2JqZWN0YCx0KX19KHQsWCxmdW5jdGlvbih0KXt0cnl7Y29uc3Qgbj1wLldlYWtSZWY7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIG5ldyBuKHQpfWNhdGNoe31yZXR1cm4gdH0obikpOmRlbGV0ZSB0W1hdfWZ1bmN0aW9uIG50KHQpe3JldHVybiBRKHRbWF0pfWNsYXNzIGV0e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLl89e30sdGhpcy52PXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6cSgpLHNhbXBsZVJhbmQ6TygpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IGV0O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0Ll89ey4uLnRoaXMuX30sdC52PXsuLi50aGlzLnZ9LHRoaXMudi5mbGFncyYmKHQudi5mbGFncz17dmFsdWVzOlsuLi50aGlzLnYuZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5rPXRoaXMuayx0LkM9dGhpcy5DLHQuaj10aGlzLmosdC5SPXRoaXMuUix0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5BPXRoaXMuQSx0Lkk9dGhpcy5JLHQuVD10aGlzLlQsdHQodCxudCh0aGlzKSksdH1zZXRDbGllbnQodCl7dGhpcy5BPXR9c2V0TGFzdEV2ZW50SWQodCl7dGhpcy5JPXR9Z2V0Q2xpZW50KCl7cmV0dXJuIHRoaXMuQX1sYXN0RXZlbnRJZCgpe3JldHVybiB0aGlzLkl9YWRkU2NvcGVMaXN0ZW5lcih0KXt0aGlzLm8ucHVzaCh0KX1hZGRFdmVudFByb2Nlc3Nvcih0KXtyZXR1cm4gdGhpcy5pLnB1c2godCksdGhpc31zZXRVc2VyKHQpe3JldHVybiB0aGlzLnA9dHx8e2VtYWlsOnZvaWQgMCxpZDp2b2lkIDAsaXBfYWRkcmVzczp2b2lkIDAsdXNlcm5hbWU6dm9pZCAwfSx0aGlzLkMmJksodGhpcy5DLHt1c2VyOnR9KSx0aGlzLk8oKSx0aGlzfWdldFVzZXIoKXtyZXR1cm4gdGhpcy5wfXNldENvbnZlcnNhdGlvbklkKHQpe3JldHVybiB0aGlzLlQ9dHx8dm9pZCAwLHRoaXMuTygpLHRoaXN9c2V0VGFncyh0KXtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4udH0sdGhpcy5PKCksdGhpc31zZXRUYWcodCxuKXtyZXR1cm4gdGhpcy5zZXRUYWdzKHtbdF06bn0pfXNldEF0dHJpYnV0ZXModCl7cmV0dXJuIHRoaXMubT17Li4udGhpcy5tLC4uLnR9LHRoaXMuTygpLHRoaXN9c2V0QXR0cmlidXRlKHQsbil7cmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlcyh7W3RdOm59KX1yZW1vdmVBdHRyaWJ1dGUodCl7cmV0dXJuIHQgaW4gdGhpcy5tJiYoZGVsZXRlIHRoaXMubVt0XSx0aGlzLk8oKSksdGhpc31zZXRFeHRyYXModCl7cmV0dXJuIHRoaXMuXz17Li4udGhpcy5fLC4uLnR9LHRoaXMuTygpLHRoaXN9c2V0RXh0cmEodCxuKXtyZXR1cm4gdGhpcy5fPXsuLi50aGlzLl8sW3RdOm59LHRoaXMuTygpLHRoaXN9c2V0RmluZ2VycHJpbnQodCl7cmV0dXJuIHRoaXMuUj10LHRoaXMuTygpLHRoaXN9c2V0TGV2ZWwodCl7cmV0dXJuIHRoaXMuaz10LHRoaXMuTygpLHRoaXN9c2V0VHJhbnNhY3Rpb25OYW1lKHQpe3JldHVybiB0aGlzLmo9dCx0aGlzLk8oKSx0aGlzfXNldENvbnRleHQodCxuKXtyZXR1cm4gbnVsbD09PW4/ZGVsZXRlIHRoaXMudlt0XTp0aGlzLnZbdF09bix0aGlzLk8oKSx0aGlzfXNldFNlc3Npb24odCl7cmV0dXJuIHQ/dGhpcy5DPXQ6ZGVsZXRlIHRoaXMuQyx0aGlzLk8oKSx0aGlzfWdldFNlc3Npb24oKXtyZXR1cm4gdGhpcy5DfXVwZGF0ZSh0KXtpZighdClyZXR1cm4gdGhpcztjb25zdCBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QodGhpcyk6dCxlPW4gaW5zdGFuY2VvZiBldD9uLmdldFNjb3BlRGF0YSgpOmsobiwiT2JqZWN0Iik/dDp2b2lkIDA7Y29uc3R7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy5fPXsuLi50aGlzLl8sLi4uaX0sdGhpcy52PXsuLi50aGlzLnYsLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLms9dSksYS5sZW5ndGgmJih0aGlzLlI9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5UPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy5fPXt9LHRoaXMucD17fSx0aGlzLnY9e30sdGhpcy5rPXZvaWQgMCx0aGlzLmo9dm9pZCAwLHRoaXMuUj12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLlQ9dm9pZCAwLHR0KHRoaXMsdm9pZCAwKSx0aGlzLmg9W10sdGhpcy5zZXRQcm9wYWdhdGlvbkNvbnRleHQoe3RyYWNlSWQ6cSgpLHNhbXBsZVJhbmQ6TygpfSksdGhpcy5PKCksdGhpc31hZGRCcmVhZGNydW1iKHQsbil7Y29uc3QgZT0ibnVtYmVyIj09dHlwZW9mIG4/bjoxMDA7aWYoZTw9MClyZXR1cm4gdGhpcztjb25zdCByPXt0aW1lc3RhbXA6SigpLC4uLnQsbWVzc2FnZTp0Lm1lc3NhZ2U/eih0Lm1lc3NhZ2UsMjA0OCk6dC5tZXNzYWdlfTtyZXR1cm4gdGhpcy51LnB1c2gociksdGhpcy51Lmxlbmd0aD5lJiYodGhpcy51PXRoaXMudS5zbGljZSgtZSksdGhpcy5BPy5yZWNvcmREcm9wcGVkRXZlbnQoImJ1ZmZlcl9vdmVyZmxvdyIsImxvZ19pdGVtIikpLHRoaXMuTygpLHRoaXN9Z2V0TGFzdEJyZWFkY3J1bWIoKXtyZXR1cm4gdGhpcy51W3RoaXMudS5sZW5ndGgtMV19Y2xlYXJCcmVhZGNydW1icygpe3JldHVybiB0aGlzLnU9W10sdGhpcy5PKCksdGhpc31hZGRBdHRhY2htZW50KHQpe3JldHVybiB0aGlzLmgucHVzaCh0KSx0aGlzfWNsZWFyQXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5oPVtdLHRoaXN9Z2V0U2NvcGVEYXRhKCl7cmV0dXJue2JyZWFkY3J1bWJzOnRoaXMudSxhdHRhY2htZW50czp0aGlzLmgsY29udGV4dHM6dGhpcy52LHRhZ3M6dGhpcy5sLGF0dHJpYnV0ZXM6dGhpcy5tLGV4dHJhOnRoaXMuXyx1c2VyOnRoaXMucCxsZXZlbDp0aGlzLmssZmluZ2VycHJpbnQ6dGhpcy5SfHxbXSxldmVudFByb2Nlc3NvcnM6dGhpcy5pLHByb3BhZ2F0aW9uQ29udGV4dDp0aGlzLk4sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOnRoaXMuUyx0cmFuc2FjdGlvbk5hbWU6dGhpcy5qLHNwYW46bnQodGhpcyksY29udmVyc2F0aW9uSWQ6dGhpcy5UfX1zZXRTREtQcm9jZXNzaW5nTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMuUz1aKHRoaXMuUyx0LDIpLHRoaXN9c2V0UHJvcGFnYXRpb25Db250ZXh0KHQpe3JldHVybiB0aGlzLk49dCx0aGlzfWdldFByb3BhZ2F0aW9uQ29udGV4dCgpe3JldHVybiB0aGlzLk59Y2FwdHVyZUV4Y2VwdGlvbih0LG4pe2NvbnN0IGU9bj8uZXZlbnRfaWR8fEcoKTtpZighdGhpcy5BKXJldHVybiBoJiZ3Lndhcm4oIk5vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBleGNlcHRpb24hIiksZTtjb25zdCByPW5ldyBFcnJvcigiU2VudHJ5IHN5bnRoZXRpY0V4Y2VwdGlvbiIpO3JldHVybiB0aGlzLkEuY2FwdHVyZUV4Y2VwdGlvbih0LHtvcmlnaW5hbEV4Y2VwdGlvbjp0LHN5bnRoZXRpY0V4Y2VwdGlvbjpyLC4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZX1jYXB0dXJlTWVzc2FnZSh0LG4sZSl7Y29uc3Qgcj1lPy5ldmVudF9pZHx8RygpO2lmKCF0aGlzLkEpcmV0dXJuIGgmJncud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIG1lc3NhZ2UhIikscjtjb25zdCBvPWU/LnN5bnRoZXRpY0V4Y2VwdGlvbj8/bmV3IEVycm9yKHQpO3JldHVybiB0aGlzLkEuY2FwdHVyZU1lc3NhZ2UodCxuLHtvcmlnaW5hbEV4Y2VwdGlvbjp0LHN5bnRoZXRpY0V4Y2VwdGlvbjpvLC4uLmUsZXZlbnRfaWQ6cn0sdGhpcykscn1jYXB0dXJlRXZlbnQodCxuKXtjb25zdCBlPXQuZXZlbnRfaWR8fG4/LmV2ZW50X2lkfHxHKCk7cmV0dXJuIHRoaXMuQT8odGhpcy5BLmNhcHR1cmVFdmVudCh0LHsuLi5uLGV2ZW50X2lkOmV9LHRoaXMpLGUpOihoJiZ3Lndhcm4oIk5vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBldmVudCEiKSxlKX1PKCl7dGhpcy50fHwodGhpcy50PSEwLHRoaXMuby5mb3JFYWNoKHQ9Pnt0KHRoaXMpfSksdGhpcy50PSExKX19Y29uc3QgcnQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyIsb3Q9dD0+dCBpbnN0YW5jZW9mIFByb21pc2UmJiF0W2l0XSxpdD1TeW1ib2woImNoYWluZWQgUHJvbWlzZUxpa2UiKSxzdD0odCxuKT0+e2lmKCFuKXJldHVybiB0O2xldCBlPSExO2Zvcihjb25zdCByIGluIHQpe2lmKHIgaW4gbiljb250aW51ZTtlPSEwO2NvbnN0IG89dFtyXTsiZnVuY3Rpb24iPT10eXBlb2Ygbz9PYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHt2YWx1ZTooLi4ubik9Pm8uYXBwbHkodCxuKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5bcl09b31yZXR1cm4gZSYmT2JqZWN0LmFzc2lnbihuLHtbaXRdOiEwfSksbn07Y2xhc3MgY3R7Y29uc3RydWN0b3IodCxuKXtsZXQgZSxyO2U9dHx8bmV3IGV0LHI9bnx8bmV3IGV0LHRoaXMuUD1be3Njb3BlOmV9XSx0aGlzLkQ9cn13aXRoU2NvcGUodCl7Y29uc3Qgbj10aGlzLlUoKTtsZXQgZTt0cnl7ZT10KG4pfWNhdGNoKHQpe3Rocm93IHRoaXMuQigpLHR9cmV0dXJuIEMoZSk/KCh0LG4sZSk9Pntjb25zdCByPXQudGhlbih0PT4obih0KSx0KSx0PT57dGhyb3cgZSh0KSx0fSk7cmV0dXJuIG90KHIpJiZvdCh0KT9yOnN0KHQscil9KShlLCgpPT50aGlzLkIoKSwoKT0+dGhpcy5CKCkpOih0aGlzLkIoKSxlKX1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudH1nZXRTY29wZSgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuc2NvcGV9Z2V0SXNvbGF0aW9uU2NvcGUoKXtyZXR1cm4gdGhpcy5EfWdldFN0YWNrVG9wKCl7cmV0dXJuIHRoaXMuUFt0aGlzLlAubGVuZ3RoLTFdfVUoKXtjb25zdCB0PXRoaXMuZ2V0U2NvcGUoKS5jbG9uZSgpO3JldHVybiB0aGlzLlAucHVzaCh7Y2xpZW50OnRoaXMuZ2V0Q2xpZW50KCksc2NvcGU6dH0pLHR9Qigpe3JldHVybiEodGhpcy5QLmxlbmd0aDw9MSkmJiEhdGhpcy5QLnBvcCgpfX1mdW5jdGlvbiB1dCgpe2NvbnN0IHQ9ZyhsKCkpO3JldHVybiB0LnN0YWNrPXQuc3RhY2t8fG5ldyBjdChtKCJkZWZhdWx0Q3VycmVudFNjb3BlIiwoKT0+bmV3IGV0KSxtKCJkZWZhdWx0SXNvbGF0aW9uU2NvcGUiLCgpPT5uZXcgZXQpKX1mdW5jdGlvbiBhdCh0KXtyZXR1cm4gdXQoKS53aXRoU2NvcGUodCl9ZnVuY3Rpb24gZnQodCxuKXtjb25zdCBlPXV0KCk7cmV0dXJuIGUud2l0aFNjb3BlKCgpPT4oZS5nZXRTdGFja1RvcCgpLnNjb3BlPXQsbih0KSkpfWZ1bmN0aW9uIGh0KHQpe3JldHVybiB1dCgpLndpdGhTY29wZSgoKT0+dCh1dCgpLmdldElzb2xhdGlvblNjb3BlKCkpKX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4gYXQobj0+e24uc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKHtbcnRdOiEwfSk7Y29uc3QgZT10KCk7cmV0dXJuIG4uc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKHtbcnRdOnZvaWQgMH0pLGV9KX1mdW5jdGlvbiBkdCh0KXtjb25zdCBuPWcodCk7cmV0dXJuIG4uYWNzP24uYWNzOntzdXBwcmVzc1RyYWNpbmc6cHQsd2l0aElzb2xhdGlvblNjb3BlOmh0LHdpdGhTY29wZTphdCx3aXRoU2V0U2NvcGU6ZnQsd2l0aFNldElzb2xhdGlvblNjb3BlOih0LG4pPT5odChuKSxnZXRDdXJyZW50U2NvcGU6KCk9PnV0KCkuZ2V0U2NvcGUoKSxnZXRJc29sYXRpb25TY29wZTooKT0+dXQoKS5nZXRJc29sYXRpb25TY29wZSgpfX1mdW5jdGlvbiBsdCgpe3JldHVybiBkdChsKCkpLmdldEN1cnJlbnRTY29wZSgpLmdldENsaWVudCgpfWNvbnN0IGd0PVsib2siLCJkZWFkbGluZV9leGNlZWRlZCIsInVuYXV0aGVudGljYXRlZCIsInBlcm1pc3Npb25fZGVuaWVkIiwibm90X2ZvdW5kIiwicmVzb3VyY2VfZXhoYXVzdGVkIiwiaW52YWxpZF9hcmd1bWVudCIsInVuaW1wbGVtZW50ZWQiLCJ1bmF2YWlsYWJsZSIsImludGVybmFsX2Vycm9yIiwidW5rbm93bl9lcnJvciIsImNhbmNlbGxlZCIsImFscmVhZHlfZXhpc3RzIiwiZmFpbGVkX3ByZWNvbmRpdGlvbiIsImFib3J0ZWQiLCJvdXRfb2ZfcmFuZ2UiLCJkYXRhX2xvc3MiXTtmdW5jdGlvbiBtdCh0KXtjb25zdCBuPXQ7cmV0dXJue3Njb3BlOm4uX3NlbnRyeVNjb3BlLGlzb2xhdGlvblNjb3BlOlEobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCB5dD0ic2VudHJ5LSI7ZnVuY3Rpb24gYnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8KG49dCwhayhuLCJTdHJpbmciKSYmIUFycmF5LmlzQXJyYXkodCkpKXJldHVybjt2YXIgbjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9X3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gX3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgoeXQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHZ0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIFN0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB3dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh2dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gJHQodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjprdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPW10KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8VigpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24geHQodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIEV0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD9OdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/TnQodC5nZXRUaW1lKCkpOlkoKX1mdW5jdGlvbiBOdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24ga3QodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDpDdCh0KSxzdGFydF90aW1lc3RhbXA6RXQobyksdGltZXN0YW1wOkV0KHMpfHx2b2lkIDAsc3RhdHVzOmp0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6eHQodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxzdGF0dXM6Im9rIixkYXRhOnt9fX1mdW5jdGlvbiBDdCh0KXtyZXR1cm4icGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMH1mdW5jdGlvbiBqdCh0KXtyZXR1cm4gdCYmMCE9PXQuY29kZT8xPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlJiYoIm9rIiE9PShuPXQubWVzc2FnZSkmJmd0LmluY2x1ZGVzKG4pKT90Lm1lc3NhZ2U6ImludGVybmFsX2Vycm9yIjoib2siO3ZhciBufWNvbnN0IFJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH07ZnVuY3Rpb24gQXQodCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IG49dHx8bHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIW58fG51bGw9PW4udHJhY2VzU2FtcGxlUmF0ZSYmIW4udHJhY2VzU2FtcGxlcil9Y29uc3QgSXQ9U3ltYm9sLmZvcigic2VudHJ5Lm5vblJlY29yZGluZ1NwYW4iKTtmdW5jdGlvbiBUdCh0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnd0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99ZnVuY3Rpb24gT3QodCl7Y29uc3Qgbj1sdCgpO2lmKCFuKXJldHVybnt9O2NvbnN0IGU9UnQodCkscj1rdChlKSxvPXIuZGF0YSxpPWUuc3BhbkNvbnRleHQoKS50cmFjZVN0YXRlLHM9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhdGUiKT8/b1sic2VudHJ5LnNhbXBsZV9yYXRlIl0/P29bInNlbnRyeS5wcmV2aW91c190cmFjZV9zYW1wbGVfcmF0ZSJdO2Z1bmN0aW9uIGModCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBzJiYic3RyaW5nIiE9dHlwZW9mIHN8fCh0LnNhbXBsZV9yYXRlPWAke3N9YCksdH1jb25zdCB1PWUuX2Zyb3plbkRzYztpZih1KXJldHVybiBjKHUpO2NvbnN0IGE9ZnVuY3Rpb24odCl7cmV0dXJuISF0JiYhMD09PXRbSXRdfShlKSxmPWEmJiJpZ25vcmVkIj09PWUuZHJvcFJlYXNvbjtpZihhJiYoIUF0KG4uZ2V0T3B0aW9ucygpKXx8Zikpe2NvbnN0IHQ9bXQoZSkuc2NvcGUscj10JiZmdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKTtyZXR1cm4gZS5kc2N8fFR0KGUudHJhY2VJZCx0KX0obix0KTtpZihyKXtjb25zdCB0PXsuLi5yfTtyZXR1cm4gZiYmKHQuc2FtcGxlZD0iZmFsc2UiKSxjKHQpfX1jb25zdCBoPWk/LmdldCgic2VudHJ5LmRzYyIpLHA9aCYmYnQoaCk7aWYocClyZXR1cm4gYyhwKTtjb25zdCBkPVR0KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLGw9b1sic2VudHJ5LnNvdXJjZSJdPz9vWyJzZW50cnkuc2VnbWVudC5uYW1lLnNvdXJjZSJdLGc9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PWwmJmcmJihkLnRyYW5zYWN0aW9uPWcpLEF0KCkmJihkLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGQuc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/bXQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhkKSxuLmVtaXQoImNyZWF0ZURzYyIsZCxlKSxkfWZ1bmN0aW9uIFB0KHQsbil7Y29uc3R7ZmluZ2VycHJpbnQ6ZSxzcGFuOnIsYnJlYWRjcnVtYnM6byxzZGtQcm9jZXNzaW5nTWV0YWRhdGE6aX09bjshZnVuY3Rpb24odCxuKXtjb25zdHtleHRyYTplLHRhZ3M6cix1c2VyOm8sY29udGV4dHM6aSxsZXZlbDpzLHRyYW5zYWN0aW9uTmFtZTpjfT1uO09iamVjdC5rZXlzKGUpLmxlbmd0aCYmKHQuZXh0cmE9ey4uLmUsLi4udC5leHRyYX0pO09iamVjdC5rZXlzKHIpLmxlbmd0aCYmKHQudGFncz17Li4uciwuLi50LnRhZ3N9KTtPYmplY3Qua2V5cyhvKS5sZW5ndGgmJih0LnVzZXI9ey4uLm8sLi4udC51c2VyfSk7T2JqZWN0LmtleXMoaSkubGVuZ3RoJiYodC5jb250ZXh0cz17Li4uaSwuLi50LmNvbnRleHRzfSk7cyYmKHQubGV2ZWw9cyk7YyYmInRyYW5zYWN0aW9uIiE9PXQudHlwZSYmKHQudHJhbnNhY3Rpb249Yyl9KHQsbiksciYmZnVuY3Rpb24odCxuKXt0LmNvbnRleHRzPXt0cmFjZTokdChuKSwuLi50LmNvbnRleHRzfSx0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YT17ZHluYW1pY1NhbXBsaW5nQ29udGV4dDpPdChuKSwuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YX07Y29uc3QgZT1SdChuKSxyPWt0KGUpLmRlc2NyaXB0aW9uO3ImJiF0LnRyYW5zYWN0aW9uJiYidHJhbnNhY3Rpb24iPT09dC50eXBlJiYodC50cmFuc2FjdGlvbj1yKX0odCxyKSxmdW5jdGlvbih0LG4pe3QuZmluZ2VycHJpbnQ9dC5maW5nZXJwcmludD9BcnJheS5pc0FycmF5KHQuZmluZ2VycHJpbnQpP3QuZmluZ2VycHJpbnQ6W3QuZmluZ2VycHJpbnRdOltdLG4mJih0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQuY29uY2F0KG4pKTt0LmZpbmdlcnByaW50Lmxlbmd0aHx8ZGVsZXRlIHQuZmluZ2VycHJpbnR9KHQsZSksZnVuY3Rpb24odCxuKXtjb25zdCBlPVsuLi50LmJyZWFkY3J1bWJzfHxbXSwuLi5uXTt0LmJyZWFkY3J1bWJzPWUubGVuZ3RoP2U6dm9pZCAwfSh0LG8pLGZ1bmN0aW9uKHQsbil7dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9ey4uLnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLC4uLm59fSh0LGkpfWZ1bmN0aW9uIER0KHQsbj1bXSl7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gVXQodCxuKXtjb25zdCBlPXRbMV07Zm9yKGNvbnN0IHQgb2YgZSl7aWYobih0LHRbMF0udHlwZSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1nKHApO3JldHVybiBuLmVuY29kZVBvbHlmaWxsP24uZW5jb2RlUG9seWZpbGwodCk6KG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHQpfWZ1bmN0aW9uIEx0KHQpe2NvbnN0W24sZV09dDtsZXQgcj1KU09OLnN0cmluZ2lmeShuKTtmdW5jdGlvbiBvKHQpeyJzdHJpbmciPT10eXBlb2Ygcj9yPSJzdHJpbmciPT10eXBlb2YgdD9yK3Q6W0J0KHIpLHRdOnIucHVzaCgic3RyaW5nIj09dHlwZW9mIHQ/QnQodCk6dCl9Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3RbbixlXT10O2lmKG8oYFxuJHtKU09OLnN0cmluZ2lmeShuKX1cbmApLCJzdHJpbmciPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpbyhlKTtlbHNle2xldCB0O3RyeXt0PUpTT04uc3RyaW5naWZ5KGUpfWNhdGNoe3Q9SlNPTi5zdHJpbmdpZnkoQihlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBNdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiB6dCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gTXR9KHQpP010W3RdOnR9ZnVuY3Rpb24gRnQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEd0KHQpe2NvbnN0IG49ZHQobCgpKTtyZXR1cm4gbi5zdXBwcmVzc1RyYWNpbmc/bi5zdXBwcmVzc1RyYWNpbmcodCk6ZnVuY3Rpb24oLi4udCl7Y29uc3Qgbj1kdChsKCkpO2lmKDI9PT10Lmxlbmd0aCl7Y29uc3RbZSxyXT10O3JldHVybiBlP24ud2l0aFNldFNjb3BlKGUscik6bi53aXRoU2NvcGUocil9cmV0dXJuIG4ud2l0aFNjb3BlKHRbMF0pfShuPT4obi5zZXRTREtQcm9jZXNzaW5nTWV0YWRhdGEoe1tydF06ITB9KSx0KCkpKX1mdW5jdGlvbiBKdCh0LG4sZSxyKXtjb25zdCBvPUZ0KGUpLGk9dC50eXBlJiYicmVwbGF5X2V2ZW50IiE9PXQudHlwZT90LnR5cGU6ImV2ZW50IjshZnVuY3Rpb24odCxuKXtpZighbilyZXR1cm4gdDtjb25zdCBlPXQuc2RrfHx7fTt0LnNkaz17Li4uZSxuYW1lOmUubmFtZXx8bi5uYW1lLHZlcnNpb246ZS52ZXJzaW9ufHxuLnZlcnNpb24saW50ZWdyYXRpb25zOlsuLi50LnNkaz8uaW50ZWdyYXRpb25zfHxbXSwuLi5uLmludGVncmF0aW9uc3x8W11dLHBhY2thZ2VzOlsuLi50LnNkaz8ucGFja2FnZXN8fFtdLC4uLm4ucGFja2FnZXN8fFtdXSxzZXR0aW5nczp0LnNkaz8uc2V0dGluZ3N8fG4uc2V0dGluZ3M/ey4uLnQuc2RrPy5zZXR0aW5ncywuLi5uLnNldHRpbmdzfTp2b2lkIDB9fSh0LGU/LnNkayk7Y29uc3Qgcz1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhPy5keW5hbWljU2FtcGxpbmdDb250ZXh0O3JldHVybntldmVudF9pZDp0LmV2ZW50X2lkLHNlbnRfYXQ6bmV3IERhdGUoUCgpKS50b0lTT1N0cmluZygpLC4uLm4mJntzZGs6bn0sLi4uISFlJiZyJiZ7ZHNuOlN0KHIpfSwuLi5vJiZ7dHJhY2U6b319fSh0LG8scixuKTtkZWxldGUgdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE7cmV0dXJuIER0KHMsW1t7dHlwZTppfSx0XV0pfWNsYXNzIFd0e2NvbnN0cnVjdG9yKHQpe3RoaXMuTD0wLHRoaXMuTT1bXSx0aGlzLkYodCl9dGhlbih0LG4pe3JldHVybiBuZXcgV3QoKGUscik9Pnt0aGlzLk0ucHVzaChbITEsbj0+e2lmKHQpdHJ5e2UodChuKSl9Y2F0Y2godCl7cih0KX1lbHNlIGUobil9LHQ9PntpZihuKXRyeXtlKG4odCkpfWNhdGNoKHQpe3IodCl9ZWxzZSByKHQpfV0pLHRoaXMuRygpfSl9Y2F0Y2godCl7cmV0dXJuIHRoaXMudGhlbih0PT50LHQpfWZpbmFsbHkodCl7cmV0dXJuIG5ldyBXdCgobixlKT0+e2xldCByLG87cmV0dXJuIHRoaXMudGhlbihuPT57bz0hMSxyPW4sdCYmdCgpfSxuPT57bz0hMCxyPW4sdCYmdCgpfSkudGhlbigoKT0+e28/ZShyKTpuKHIpfSl9KX1HKCl7aWYoMD09PXRoaXMuTClyZXR1cm47Y29uc3QgdD10aGlzLk0uc2xpY2UoKTt0aGlzLk09W10sdC5mb3JFYWNoKHQ9Pnt0WzBdfHwoMT09PXRoaXMuTCYmdFsxXSh0aGlzLkopLDI9PT10aGlzLkwmJnRbMl0odGhpcy5KKSx0WzBdPSEwKX0pfUYodCl7Y29uc3Qgbj0odCxuKT0+ezA9PT10aGlzLkwmJihDKG4pP24udGhlbihlLHIpOih0aGlzLkw9dCx0aGlzLko9bix0aGlzLkcoKSkpfSxlPXQ9PntuKDEsdCl9LHI9dD0+e24oMix0KX07dHJ5e3QoZSxyKX1jYXRjaCh0KXtyKHQpfX19Y29uc3QgWXQ9U3ltYm9sLmZvcigiU2VudHJ5QnVmZmVyRnVsbEVycm9yIik7ZnVuY3Rpb24gSHQodD0xMDApe2NvbnN0IG49bmV3IFNldDtmdW5jdGlvbiBlKHQpe24uZGVsZXRlKHQpfXJldHVybntnZXQgJCgpe3JldHVybiBBcnJheS5mcm9tKG4pfSxhZGQ6ZnVuY3Rpb24ocil7aWYoIShuLnNpemU8dCkpcmV0dXJuIG89WXQsbmV3IFd0KCh0LG4pPT57bihvKX0pO3ZhciBvO2NvbnN0IGk9cigpO3JldHVybiBuLmFkZChpKSxpLnRoZW4oKCk9PmUoaSksKCk9PmUoaSkpLGl9LGRyYWluOmZ1bmN0aW9uKHQpe2lmKCFuLnNpemUpcmV0dXJuIGU9ITAsbmV3IFd0KHQ9Pnt0KGUpfSk7dmFyIGU7Y29uc3Qgcj1Qcm9taXNlLmFsbFNldHRsZWQoQXJyYXkuZnJvbShuKSkudGhlbigoKT0+ITApO2lmKCF0KXJldHVybiByO2NvbnN0IG89W3IsbmV3IFByb21pc2Uobj0+e3JldHVybiJvYmplY3QiPT10eXBlb2YoZT1zZXRUaW1lb3V0KCgpPT5uKCExKSx0KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnVucmVmJiZlLnVucmVmKCksZTt2YXIgZX0pXTtyZXR1cm4gUHJvbWlzZS5yYWNlKG8pfX19ZnVuY3Rpb24gS3QodCx7c3RhdHVzQ29kZTpuLGhlYWRlcnM6ZX0scj1QKCkpe2NvbnN0IG89ey4uLnR9LGk9ZT8uWyJ4LXNlbnRyeS1yYXRlLWxpbWl0cyJdLHM9ZT8uWyJyZXRyeS1hZnRlciJdO2lmKGkpZm9yKGNvbnN0IHQgb2YgaS50cmltKCkuc3BsaXQoIiwiKSl7Y29uc3RbbixlLCwsaV09dC5zcGxpdCgiOiIsNSkscz1wYXJzZUludChuLDEwKSxjPTFlMyooaXNOYU4ocyk/NjA6cyk7aWYoZSlmb3IoY29uc3QgdCBvZiBlLnNwbGl0KCI7IikpIm1ldHJpY19idWNrZXQiPT09dCYmaSYmIWkuc3BsaXQoIjsiKS5pbmNsdWRlcygiY3VzdG9tIil8fChvW3RdPXIrYyk7ZWxzZSBvLmFsbD1yK2N9ZWxzZSBzP28uYWxsPXIrZnVuY3Rpb24odCxuPVAoKSl7Y29uc3QgZT1wYXJzZUludChgJHt0fWAsMTApO2lmKCFpc05hTihlKSlyZXR1cm4gMWUzKmU7Y29uc3Qgcj1EYXRlLnBhcnNlKGAke3R9YCk7cmV0dXJuIGlzTmFOKHIpPzZlNDpyLW59KHMscik6NDI5PT09biYmKG8uYWxsPXIrNmU0KTtyZXR1cm4gb31mdW5jdGlvbiBadCh0LG4sZT1IdCh0LmJ1ZmZlclNpemV8fDY0KSl7bGV0IHI9e307cmV0dXJue3NlbmQ6ZnVuY3Rpb24odCl7Y29uc3Qgbz1bXTtpZihVdCh0LCh0LG4pPT57Y29uc3QgZT16dChuKTsoZnVuY3Rpb24odCxuLGU9UCgpKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdFtuXXx8dC5hbGx8fDB9KHQsbik+ZX0pKHIsZSl8fG8ucHVzaCh0KX0pLDA9PT1vLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtjb25zdCBpPUR0KHRbMF0sbykscz10PT57IWZ1bmN0aW9uKHQsbil7cmV0dXJuIFV0KHQsKHQsZSk9Pm4uaW5jbHVkZXMoZSkpfShpLFsiY2xpZW50X3JlcG9ydCJdKT9VdChpLCh0LG4pPT57fSk6aCYmdy53YXJuKGBEcm9wcGluZyBjbGllbnQgcmVwb3J0LiBXaWxsIG5vdCBzZW5kIG91dGNvbWVzIChyZWFzb246ICR7dH0pLmApfTtyZXR1cm4gZS5hZGQoKCk9Pm4oe2JvZHk6THQoaSl9KS50aGVuKHQ9PjQxMz09PXQuc3RhdHVzQ29kZT8oaCYmdy5lcnJvcigiU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlIDQxMy4gRW52ZWxvcGUgd2FzIGRpc2NhcmRlZCBkdWUgdG8gZXhjZWVkaW5nIHNpemUgbGltaXRzLiIpLHMoInNlbmRfZXJyb3IiKSx0KTooaCYmdm9pZCAwIT09dC5zdGF0dXNDb2RlJiYodC5zdGF0dXNDb2RlPDIwMHx8dC5zdGF0dXNDb2RlPj0zMDApJiZ3Lndhcm4oYFNlbnRyeSByZXNwb25kZWQgd2l0aCBzdGF0dXMgY29kZSAke3Quc3RhdHVzQ29kZX0gdG8gc2VudCBldmVudC5gKSxyPUt0KHIsdCksdCksdD0+e3Rocm93IHMoIm5ldHdvcmtfZXJyb3IiKSxoJiZ3LmVycm9yKCJFbmNvdW50ZXJlZCBlcnJvciBydW5uaW5nIHRyYW5zcG9ydCByZXF1ZXN0OiIsdCksdH0pKS50aGVuKHQ9PnQsdD0+e2lmKHQ9PT1ZdClyZXR1cm4gaCYmdy5lcnJvcigiU2tpcHBlZCBzZW5kaW5nIGV2ZW50IGJlY2F1c2UgYnVmZmVyIGlzIGZ1bGwuIikscygicXVldWVfb3ZlcmZsb3ciKSxQcm9taXNlLnJlc29sdmUoe30pO3Rocm93IHR9KX0sZmx1c2g6dD0+ZS5kcmFpbih0KX19Y29uc3QgcXQ9L14oXFMrOlxcfFwvPykoW1xzXFNdKj8pKCg/OlwuezEsMn18W14vXFxdKz98KShcLlteLi9cXF0qfCkpKD86Wy9cXF0qKSQvO2Z1bmN0aW9uIFZ0KHQpe2NvbnN0IG49ZnVuY3Rpb24odCl7Y29uc3Qgbj10Lmxlbmd0aD4xMDI0P2A8dHJ1bmNhdGVkPiR7dC5zbGljZSgtMTAyNCl9YDp0LGU9cXQuZXhlYyhuKTtyZXR1cm4gZT9lLnNsaWNlKDEpOltdfSh0KSxlPW5bMF18fCIiO2xldCByPW5bMV07cmV0dXJuIGV8fHI/KHImJihyPXIuc2xpY2UoMCxyLmxlbmd0aC0xKSksZStyKToiLiJ9ZnVuY3Rpb24gUXQodCxuPSExKXtyZXR1cm4hKG58fHQmJiF0LnN0YXJ0c1dpdGgoIi8iKSYmIXQubWF0Y2goL15bQS1aXTovKSYmIXQuc3RhcnRzV2l0aCgiLiIpJiYhdC5tYXRjaCgvXlthLXpBLVpdKFthLXpBLVowLTkuXC0rXSkqOlwvXC8vKSkmJnZvaWQgMCE9PXQmJiF0LmluY2x1ZGVzKCJub2RlX21vZHVsZXMvIil9dmFyIFh0O2NvbnN0IHRuPVN5bWJvbCgiQWdlbnRCYXNlSW50ZXJuYWxTdGF0ZSIpO2NsYXNzIG5uIGV4dGVuZHMoWHQ9aS5BZ2VudCxYdCl7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1t0bl09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbdG5dLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW3RuXS5jdXJyZW50U29ja2V0O2lmKHRoaXNbdG5dLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1t0bl0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1t0bl0mJih0aGlzW3RuXS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1t0bl0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1t0bl0mJih0aGlzW3RuXS5wcm90b2NvbD10KX19ZnVuY3Rpb24gZW4oLi4udCl7dy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIHJuKHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIGVuKCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLGc9e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9Z1tvXTsic3RyaW5nIj09dHlwZW9mIHM/Z1tvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTpnW29dPWl9ZW4oImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLGcpLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6Z30sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksZW4oIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLGVuKCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIG9uKC4uLnQpe3cubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBzbiBleHRlbmRzIG5ue2NvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSxvbigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3VuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXtvbigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2Ugb24oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9cm4ocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsY24pLG4uc2VjdXJlRW5kcG9pbnQpe29uKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi51bihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57b24oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGNuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gdW4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9c24ucHJvdG9jb2xzPVsiaHR0cCIsImh0dHBzIl07ZnVuY3Rpb24gYW4odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBmbj1uO2xldCBobixwbj0wLGRuPXt9O2Z1bmN0aW9uIGxuKHQpe2ZuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgZ24sbW4seW47Y29uc3QgYm49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2h7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxadCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgc24ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntHdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBnPXIuc3RhcnRzV2l0aCgiWyIpLG09bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOmc/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTttLm9uKCJlcnJvciIscCksZC5waXBlKG0pfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBadCh0LGgpfSh7dXJsOihnbj1mbi5kc24sbW49Zm4udHVubmVsLHluPWZuLnNka01ldGFkYXRhLnNkayxtbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oZ24pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGduLHluKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIF9uKCl7aWYoaG4pe2xuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxLKGhuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOmZuLnJlbGVhc2UsZW52aXJvbm1lbnQ6Zm4uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89RnQoZSk7cmV0dXJuIER0KHtzZW50X2F0Om5ldyBEYXRlKFAoKSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpTdChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShobixmbi5kc24sZm4uc2RrTWV0YWRhdGEsZm4udHVubmVsKTtsbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgYm4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiB2bih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KHgobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoeChuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoeChuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8eChuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKGZuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9TSh0LmZpbGVuYW1lLGZuLmFwcFJvb3RQYXRoKSk7cmV0dXJuIG59YXN5bmMgZnVuY3Rpb24gU24odCxuKXtpZihwbj49Zm4ubWF4QW5yRXZlbnRzKXJldHVybjtwbis9MSxhd2FpdCBfbigpLGxuKCJTZW5kaW5nIGV2ZW50Iik7Y29uc3QgZT17ZXZlbnRfaWQ6RygpLGNvbnRleHRzOmZuLmNvbnRleHRzLHJlbGVhc2U6Zm4ucmVsZWFzZSxlbnZpcm9ubWVudDpmbi5lbnZpcm9ubWVudCxkaXN0OmZuLmRpc3QscGxhdGZvcm06Im5vZGUiLGxldmVsOiJlcnJvciIsZXhjZXB0aW9uOnt2YWx1ZXM6W3t0eXBlOiJBcHBsaWNhdGlvbk5vdFJlc3BvbmRpbmciLHZhbHVlOmBBcHBsaWNhdGlvbiBOb3QgUmVzcG9uZGluZyBmb3IgYXQgbGVhc3QgJHtmbi5hbnJUaHJlc2hvbGR9IG1zYCxzdGFja3RyYWNlOntmcmFtZXM6dm4odCl9LG1lY2hhbmlzbTp7dHlwZToiQU5SIn19XX0sdGFnczpmbi5zdGF0aWNUYWdzfTtuJiZmdW5jdGlvbih0LG4pe2lmKFB0KHQsbiksIXQuY29udGV4dHM/LnRyYWNlKXtjb25zdHt0cmFjZUlkOmUscGFyZW50U3BhbklkOnIscHJvcGFnYXRpb25TcGFuSWQ6b309bi5wcm9wYWdhdGlvbkNvbnRleHQ7dC5jb250ZXh0cz17dHJhY2U6e3RyYWNlX2lkOmUsc3Bhbl9pZDpvfHxWKCkscGFyZW50X3NwYW5faWQ6cn0sLi4udC5jb250ZXh0c319fShlLG4pLGZ1bmN0aW9uKHQpe2lmKDA9PT1PYmplY3Qua2V5cyhkbikubGVuZ3RoKXJldHVybjtjb25zdCBuPWZuLmFwcFJvb3RQYXRoP3t9OmRuO2lmKGZuLmFwcFJvb3RQYXRoKWZvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVudHJpZXMoZG4pKW5bTSh0LGZuLmFwcFJvb3RQYXRoKV09ZTtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0IHIgb2YgdC5leGNlcHRpb24/LnZhbHVlc3x8W10pZm9yKGNvbnN0IHQgb2Ygci5zdGFja3RyYWNlPy5mcmFtZXN8fFtdKXtjb25zdCByPXQuYWJzX3BhdGh8fHQuZmlsZW5hbWU7ciYmbltyXSYmZS5zZXQocixuW3JdKX1pZihlLnNpemU+MCl7Y29uc3Qgbj1bXTtmb3IoY29uc3RbdCxyXW9mIGUuZW50cmllcygpKW4ucHVzaCh7dHlwZToic291cmNlbWFwIixjb2RlX2ZpbGU6dCxkZWJ1Z19pZDpyfSk7dC5kZWJ1Z19tZXRhPXtpbWFnZXM6bn19fShlKTtjb25zdCByPUp0KGUsZm4uZHNuLGZuLnNka01ldGFkYXRhLGZuLnR1bm5lbCk7bG4oSlNPTi5zdHJpbmdpZnkocikpLGF3YWl0IGJuLnNlbmQociksYXdhaXQgYm4uZmx1c2goMmUzKSxwbj49Zm4ubWF4QW5yRXZlbnRzJiZzZXRUaW1lb3V0KCgpPT57cHJvY2Vzcy5leGl0KDApfSw1ZTMpfWxldCB3bjtpZihsbigiU3RhcnRlZCIpLGZuLmNhcHR1cmVTdGFja1RyYWNlKXtsbigiQ29ubmVjdGluZyB0byBkZWJ1Z2dlciIpO2NvbnN0IG49bmV3IHQ7bi5jb25uZWN0VG9NYWluVGhyZWFkKCksbG4oIkNvbm5lY3RlZCB0byBkZWJ1Z2dlciIpO2NvbnN0IGU9bmV3IE1hcDtuLm9uKCJEZWJ1Z2dlci5zY3JpcHRQYXJzZWQiLHQ9PntlLnNldCh0LnBhcmFtcy5zY3JpcHRJZCx0LnBhcmFtcy51cmwpfSksbi5vbigiRGVidWdnZXIucGF1c2VkIix0PT57aWYoIm90aGVyIj09PXQucGFyYW1zLnJlYXNvbil0cnl7bG4oIkRlYnVnZ2VyIHBhdXNlZCIpO2NvbnN0IGk9Wy4uLnQucGFyYW1zLmNhbGxGcmFtZXNdLHM9Zm4uYXBwUm9vdFBhdGg/ZnVuY3Rpb24odD0ocHJvY2Vzcy5hcmd2WzFdP1Z0KHByb2Nlc3MuYXJndlsxXSk6cHJvY2Vzcy5jd2QoKSksbj0iXFwiPT09byl7Y29uc3QgZT1uP2FuKHQpOnQ7cmV0dXJuIHQ9PntpZighdClyZXR1cm47Y29uc3Qgbz1uP2FuKHQpOnQ7bGV0e2RpcjppLGJhc2U6cyxleHQ6Y309ci5wYXJzZShvKTsiLmpzIiE9PWMmJiIubWpzIiE9PWMmJiIuY2pzIiE9PWN8fChzPXMuc2xpY2UoMCwtMSpjLmxlbmd0aCkpO2NvbnN0IHU9ZGVjb2RlVVJJQ29tcG9uZW50KHMpO2l8fChpPSIuIik7Y29uc3QgYT1pLmxhc3RJbmRleE9mKCIvbm9kZV9tb2R1bGVzIik7aWYoYT4tMSlyZXR1cm5gJHtpLnNsaWNlKGErMTQpLnJlcGxhY2UoL1wvL2csIi4iKX06JHt1fWA7aWYoaS5zdGFydHNXaXRoKGUpKXtjb25zdCB0PWkuc2xpY2UoZS5sZW5ndGgrMSkucmVwbGFjZSgvXC8vZywiLiIpO3JldHVybiB0P2Ake3R9OiR7dX1gOnV9cmV0dXJuIHV9fShmbi5hcHBSb290UGF0aCk6KCk9Pnt9LGM9aS5tYXAodD0+ZnVuY3Rpb24odCxuLGUpe2NvbnN0IHI9bj9uLnJlcGxhY2UoL15maWxlOlwvXC8vLCIiKTp2b2lkIDAsbz10LmxvY2F0aW9uLmNvbHVtbk51bWJlcj90LmxvY2F0aW9uLmNvbHVtbk51bWJlcisxOnZvaWQgMCxpPXQubG9jYXRpb24ubGluZU51bWJlcj90LmxvY2F0aW9uLmxpbmVOdW1iZXIrMTp2b2lkIDA7cmV0dXJue2ZpbGVuYW1lOnIsbW9kdWxlOmUociksZnVuY3Rpb246dC5mdW5jdGlvbk5hbWV8fCI/Iixjb2xubzpvLGxpbmVubzppLGluX2FwcDpyP1F0KHIpOnZvaWQgMH19KHQsZS5nZXQodC5sb2NhdGlvbi5zY3JpcHRJZCkscykpLHU9c2V0VGltZW91dCgoKT0+e1NuKGMpLnRoZW4obnVsbCwoKT0+e2xuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0sNWUzKTtuLnBvc3QoIlJ1bnRpbWUuZXZhbHVhdGUiLHtleHByZXNzaW9uOiJnbG9iYWwuX19TRU5UUllfR0VUX1NDT1BFU19fKCk7IixzaWxlbnQ6ITAscmV0dXJuQnlWYWx1ZTohMH0sKHQsZSk9Pnt0JiZsbihgRXJyb3IgZXhlY3V0aW5nIHNjcmlwdDogJyR7dC5tZXNzYWdlfSdgKSxjbGVhclRpbWVvdXQodSk7Y29uc3Qgcj1lPy5yZXN1bHQ/ZS5yZXN1bHQudmFsdWU6dm9pZCAwO24ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksU24oYyxyKS50aGVuKG51bGwsKCk9PntsbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkLiIpfSl9KX1jYXRjaCh0KXt0aHJvdyBuLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpLG4ucG9zdCgiRGVidWdnZXIuZGlzYWJsZSIpLHR9fSksd249KCk9Pnt0cnl7bi5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiLCgpPT57bi5wb3N0KCJEZWJ1Z2dlci5wYXVzZSIpfSl9Y2F0Y2h7fX19Y29uc3R7cG9sbDokbn09ZnVuY3Rpb24odCxuLGUscil7Y29uc3Qgbz10KCk7bGV0IGk9ITEscz0hMDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9Pntjb25zdCB0PW8uZ2V0VGltZU1zKCk7ITE9PT1pJiZ0Pm4rZSYmKGk9ITAscyYmcigpKSx0PG4rZSYmKGk9ITEpfSwyMCkse3BvbGw6KCk9PntvLnJlc2V0KCl9LGVuYWJsZWQ6dD0+e3M9dH19fShmdW5jdGlvbigpe2xldCB0PXByb2Nlc3MuaHJ0aW1lKCk7cmV0dXJue2dldFRpbWVNczooKT0+e2NvbnN0W24sZV09cHJvY2Vzcy5ocnRpbWUodCk7cmV0dXJuIE1hdGguZmxvb3IoMWUzKm4rZS8xZTYpfSxyZXNldDooKT0+e3Q9cHJvY2Vzcy5ocnRpbWUoKX19fSxmbi5wb2xsSW50ZXJ2YWwsZm4uYW5yVGhyZXNob2xkLGZ1bmN0aW9uKCl7bG4oIldhdGNoZG9nIHRpbWVvdXQiKSx3bj8obG4oIlBhdXNpbmcgZGVidWdnZXIgdG8gY2FwdHVyZSBzdGFjayB0cmFjZSIpLHduKCkpOihsbigiQ2FwdHVyaW5nIGV2ZW50IHdpdGhvdXQgYSBzdGFjayB0cmFjZSIpLFNuKCkudGhlbihudWxsLCgpPT57bG4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZCBvbiB3YXRjaGRvZyB0aW1lb3V0LiIpfSkpfSk7ZT8ub24oIm1lc3NhZ2UiLHQ9Pnt0LnNlc3Npb24mJihobj1IKHQuc2Vzc2lvbikpLHQuZGVidWdJbWFnZXMmJihkbj10LmRlYnVnSW1hZ2VzKSwkbigpfSk7";
|
|
10
|
+
const DEFAULT_INTERVAL = 50;
|
|
11
|
+
const DEFAULT_HANG_THRESHOLD = 5e3;
|
|
12
|
+
function log(message, ...args) {
|
|
13
|
+
core.debug.log(`[ANR] ${message}`, ...args);
|
|
14
|
+
}
|
|
15
|
+
function globalWithScopeFetchFn() {
|
|
16
|
+
return core.GLOBAL_OBJ;
|
|
17
|
+
}
|
|
18
|
+
function getScopeData() {
|
|
19
|
+
const scope = core.getCombinedScopeData(core.getIsolationScope(), core.getCurrentScope());
|
|
20
|
+
scope.attachments = [];
|
|
21
|
+
scope.eventProcessors = [];
|
|
22
|
+
return scope;
|
|
23
|
+
}
|
|
24
|
+
async function getContexts(client) {
|
|
25
|
+
let event = { message: "ANR" };
|
|
26
|
+
const eventHint = {};
|
|
27
|
+
for (const processor of client.getEventProcessors()) {
|
|
28
|
+
if (event === null) break;
|
|
29
|
+
event = await processor(event, eventHint);
|
|
30
|
+
}
|
|
31
|
+
return event?.contexts || {};
|
|
32
|
+
}
|
|
33
|
+
const INTEGRATION_NAME = "Anr";
|
|
34
|
+
const _anrIntegration = ((options = {}) => {
|
|
35
|
+
let worker;
|
|
36
|
+
let client;
|
|
37
|
+
const gbl = globalWithScopeFetchFn();
|
|
38
|
+
gbl.__SENTRY_GET_SCOPES__ = getScopeData;
|
|
39
|
+
return {
|
|
40
|
+
name: INTEGRATION_NAME,
|
|
41
|
+
startWorker: () => {
|
|
42
|
+
if (worker) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (client) {
|
|
46
|
+
worker = _startWorker(client, options);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
stopWorker: () => {
|
|
50
|
+
if (worker) {
|
|
51
|
+
worker.then((stop) => {
|
|
52
|
+
stop();
|
|
53
|
+
worker = void 0;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
async setup(initClient) {
|
|
58
|
+
client = initClient;
|
|
59
|
+
if (options.captureStackTrace && await debug.isDebuggerEnabled()) {
|
|
60
|
+
core.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled");
|
|
61
|
+
options.captureStackTrace = false;
|
|
62
|
+
}
|
|
63
|
+
setImmediate(() => this.startWorker());
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
const anrIntegration = core.defineIntegration(_anrIntegration);
|
|
68
|
+
async function _startWorker(client, integrationOptions) {
|
|
69
|
+
const dsn = client.getDsn();
|
|
70
|
+
if (!dsn) {
|
|
71
|
+
return () => {
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const contexts = await getContexts(client);
|
|
75
|
+
delete contexts.app?.app_memory;
|
|
76
|
+
delete contexts.device?.free_memory;
|
|
77
|
+
const initOptions = client.getOptions();
|
|
78
|
+
const sdkMetadata = client.getSdkMetadata() || {};
|
|
79
|
+
if (sdkMetadata.sdk) {
|
|
80
|
+
sdkMetadata.sdk.integrations = initOptions.integrations.map((i) => i.name);
|
|
81
|
+
}
|
|
82
|
+
const options = {
|
|
83
|
+
debug: core.debug.isEnabled(),
|
|
84
|
+
dsn,
|
|
85
|
+
tunnel: initOptions.tunnel,
|
|
86
|
+
environment: initOptions.environment || "production",
|
|
87
|
+
release: initOptions.release,
|
|
88
|
+
dist: initOptions.dist,
|
|
89
|
+
sdkMetadata,
|
|
90
|
+
appRootPath: integrationOptions.appRootPath,
|
|
91
|
+
pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL,
|
|
92
|
+
anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD,
|
|
93
|
+
captureStackTrace: !!integrationOptions.captureStackTrace,
|
|
94
|
+
maxAnrEvents: integrationOptions.maxAnrEvents || 1,
|
|
95
|
+
staticTags: integrationOptions.staticTags || {},
|
|
96
|
+
contexts
|
|
97
|
+
};
|
|
98
|
+
if (options.captureStackTrace) {
|
|
99
|
+
const inspector = await import('node:inspector');
|
|
100
|
+
if (!inspector.url()) {
|
|
101
|
+
inspector.open(0);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const worker = new node_worker_threads.Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {
|
|
105
|
+
workerData: options,
|
|
106
|
+
// We don't want any Node args to be passed to the worker
|
|
107
|
+
execArgv: [],
|
|
108
|
+
env: { ...process.env, NODE_OPTIONS: void 0 }
|
|
109
|
+
});
|
|
110
|
+
process.on("exit", () => {
|
|
111
|
+
worker.terminate();
|
|
112
|
+
});
|
|
113
|
+
const timer = setInterval(() => {
|
|
114
|
+
try {
|
|
115
|
+
const currentSession = core.getIsolationScope().getSession();
|
|
116
|
+
const session = currentSession ? { ...currentSession, toJSON: void 0 } : void 0;
|
|
117
|
+
worker.postMessage({ session, debugImages: core.getFilenameToDebugIdMap(initOptions.stackParser) });
|
|
118
|
+
} catch {
|
|
119
|
+
}
|
|
120
|
+
}, options.pollInterval);
|
|
121
|
+
timer.unref();
|
|
122
|
+
worker.on("message", (msg) => {
|
|
123
|
+
if (msg === "session-ended") {
|
|
124
|
+
log("ANR event sent from ANR worker. Clearing session in this thread.");
|
|
125
|
+
core.getIsolationScope().setSession(void 0);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
worker.once("error", (err) => {
|
|
129
|
+
clearInterval(timer);
|
|
130
|
+
log("ANR worker error", err);
|
|
131
|
+
});
|
|
132
|
+
worker.once("exit", (code) => {
|
|
133
|
+
clearInterval(timer);
|
|
134
|
+
log("ANR worker exit", code);
|
|
135
|
+
});
|
|
136
|
+
worker.unref();
|
|
137
|
+
return () => {
|
|
138
|
+
worker.terminate();
|
|
139
|
+
clearInterval(timer);
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function disableAnrDetectionForCallback(callback) {
|
|
143
|
+
const integration = core.getClient()?.getIntegrationByName(INTEGRATION_NAME);
|
|
144
|
+
if (!integration) {
|
|
145
|
+
return callback();
|
|
146
|
+
}
|
|
147
|
+
integration.stopWorker();
|
|
148
|
+
const result = callback();
|
|
149
|
+
if (isPromise(result)) {
|
|
150
|
+
return result.finally(() => integration.startWorker());
|
|
151
|
+
}
|
|
152
|
+
integration.startWorker();
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
exports.anrIntegration = anrIntegration;
|
|
157
|
+
exports.base64WorkerScript = base64WorkerScript;
|
|
158
|
+
exports.disableAnrDetectionForCallback = disableAnrDetectionForCallback;
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/integrations/anr/index.ts"],"sourcesContent":["import { types } from 'node:util';\nimport { Worker } from 'node:worker_threads';\nimport type { Contexts, Event, EventHint, Integration, IntegrationFn, ScopeData } from '@sentry/core';\nimport {\n debug,\n defineIntegration,\n getClient,\n getCombinedScopeData,\n getCurrentScope,\n getFilenameToDebugIdMap,\n getIsolationScope,\n GLOBAL_OBJ,\n} from '@sentry/core';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { AnrIntegrationOptions, WorkerStartData } from './common';\n\nconst { isPromise } = types;\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###AnrWorkerScript###';\n\nconst DEFAULT_INTERVAL = 50;\nconst DEFAULT_HANG_THRESHOLD = 5000;\n\nfunction log(message: string, ...args: unknown[]): void {\n debug.log(`[ANR] ${message}`, ...args);\n}\n\nfunction globalWithScopeFetchFn(): typeof GLOBAL_OBJ & { __SENTRY_GET_SCOPES__?: () => ScopeData } {\n return GLOBAL_OBJ;\n}\n\n/** Fetches merged scope data */\nfunction getScopeData(): ScopeData {\n const scope = getCombinedScopeData(getIsolationScope(), getCurrentScope());\n\n // We remove attachments because they likely won't serialize well as json\n scope.attachments = [];\n // We can't serialize event processor functions\n scope.eventProcessors = [];\n\n return scope;\n}\n\n/**\n * Gets contexts by calling all event processors. This shouldn't be called until all integrations are setup\n */\nasync function getContexts(client: NodeClient): Promise<Contexts> {\n let event: Event | null = { message: 'ANR' };\n const eventHint: EventHint = {};\n\n for (const processor of client.getEventProcessors()) {\n if (event === null) break;\n event = await processor(event, eventHint);\n }\n\n return event?.contexts || {};\n}\n\nconst INTEGRATION_NAME = 'Anr' as const;\n\ntype AnrInternal = { startWorker: () => void; stopWorker: () => void };\n\n// eslint-disable-next-line typescript/no-deprecated\nconst _anrIntegration = ((options: Partial<AnrIntegrationOptions> = {}) => {\n let worker: Promise<() => void> | undefined;\n let client: NodeClient | undefined;\n\n // Hookup the scope fetch function to the global object so that it can be called from the worker thread via the\n // debugger when it pauses\n const gbl = globalWithScopeFetchFn();\n gbl.__SENTRY_GET_SCOPES__ = getScopeData;\n\n return {\n name: INTEGRATION_NAME,\n startWorker: () => {\n if (worker) {\n return;\n }\n\n if (client) {\n worker = _startWorker(client, options);\n }\n },\n stopWorker: () => {\n if (worker) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.then(stop => {\n stop();\n worker = undefined;\n });\n }\n },\n async setup(initClient: NodeClient) {\n client = initClient;\n\n if (options.captureStackTrace && (await isDebuggerEnabled())) {\n debug.warn('ANR captureStackTrace has been disabled because the debugger was already enabled');\n options.captureStackTrace = false;\n }\n\n // setImmediate is used to ensure that all other integrations have had their setup called first.\n // This allows us to call into all integrations to fetch the full context\n setImmediate(() => this.startWorker());\n },\n } as Integration & AnrInternal;\n}) satisfies IntegrationFn;\n\n// eslint-disable-next-line typescript/no-deprecated\ntype AnrReturn = (options?: Partial<AnrIntegrationOptions>) => Integration & AnrInternal;\n\n/**\n * Application Not Responding (ANR) integration for Node.js applications.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n *\n * Detects when the Node.js main thread event loop is blocked for more than the configured\n * threshold (5 seconds by default) and reports these as Sentry events.\n *\n * ANR detection uses a worker thread to monitor the event loop in the main app thread.\n * The main app thread sends a heartbeat message to the ANR worker thread every 50ms by default.\n * If the ANR worker does not receive a heartbeat message for the configured threshold duration,\n * it triggers an ANR event.\n *\n * - Node.js 16.17.0 or higher\n * - Only supported in the Node.js runtime (not browsers)\n * - Not supported for Node.js clusters\n *\n * Overhead should be minimal:\n * - Main thread: Only polling the ANR worker over IPC every 50ms\n * - Worker thread: Consumes around 10-20 MB of RAM\n * - When ANR detected: Brief pause in debugger to capture stack trace (negligible compared to the blocking)\n *\n * @example\n * ```javascript\n * Sentry.init({\n * dsn: \"https://examplePublicKey@o0.ingest.sentry.io/0\",\n * integrations: [\n * Sentry.anrIntegration({\n * anrThreshold: 5000,\n * captureStackTrace: true,\n * pollInterval: 50,\n * }),\n * ],\n * });\n * ```\n */\nexport const anrIntegration = defineIntegration(_anrIntegration) as AnrReturn;\n\n/**\n * Starts the ANR worker thread\n *\n * @returns A function to stop the worker\n */\nasync function _startWorker(\n client: NodeClient,\n // eslint-disable-next-line typescript/no-deprecated\n integrationOptions: Partial<AnrIntegrationOptions>,\n): Promise<() => void> {\n const dsn = client.getDsn();\n\n if (!dsn) {\n return () => {\n //\n };\n }\n\n const contexts = await getContexts(client);\n\n // These will not be accurate if sent later from the worker thread\n delete contexts.app?.app_memory;\n delete contexts.device?.free_memory;\n\n const initOptions = client.getOptions();\n\n const sdkMetadata = client.getSdkMetadata() || {};\n if (sdkMetadata.sdk) {\n sdkMetadata.sdk.integrations = initOptions.integrations.map(i => i.name);\n }\n\n const options: WorkerStartData = {\n debug: debug.isEnabled(),\n dsn,\n tunnel: initOptions.tunnel,\n environment: initOptions.environment || 'production',\n release: initOptions.release,\n dist: initOptions.dist,\n sdkMetadata,\n appRootPath: integrationOptions.appRootPath,\n pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL,\n anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD,\n captureStackTrace: !!integrationOptions.captureStackTrace,\n maxAnrEvents: integrationOptions.maxAnrEvents || 1,\n staticTags: integrationOptions.staticTags || {},\n contexts,\n };\n\n if (options.captureStackTrace) {\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n const timer = setInterval(() => {\n try {\n const currentSession = getIsolationScope().getSession();\n // We need to copy the session object and remove the toJSON method so it can be sent to the worker\n // serialized without making it a SerializedSession\n const session = currentSession ? { ...currentSession, toJSON: undefined } : undefined;\n // message the worker to tell it the main event loop is still running\n worker.postMessage({ session, debugImages: getFilenameToDebugIdMap(initOptions.stackParser) });\n } catch {\n //\n }\n }, options.pollInterval);\n // Timer should not block exit\n timer.unref();\n\n worker.on('message', (msg: string) => {\n if (msg === 'session-ended') {\n log('ANR event sent from ANR worker. Clearing session in this thread.');\n getIsolationScope().setSession(undefined);\n }\n });\n\n worker.once('error', (err: Error) => {\n clearInterval(timer);\n log('ANR worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n clearInterval(timer);\n log('ANR worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n clearInterval(timer);\n };\n}\n\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback<T>(callback: () => T): T;\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback<T>(callback: () => Promise<T>): Promise<T>;\n/**\n * Temporarily disables ANR detection for the duration of a callback function.\n *\n * This utility function allows you to disable ANR detection during operations that\n * are expected to block the event loop, such as intensive computational tasks or\n * synchronous I/O operations.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback<T>(callback: () => T | Promise<T>): T | Promise<T> {\n const integration = getClient()?.getIntegrationByName(INTEGRATION_NAME) as AnrInternal | undefined;\n\n if (!integration) {\n return callback();\n }\n\n integration.stopWorker();\n\n const result = callback();\n if (isPromise(result)) {\n return result.finally(() => integration.startWorker());\n }\n\n integration.startWorker();\n return result;\n}\n"],"names":["types","debug","GLOBAL_OBJ","getCombinedScopeData","getIsolationScope","getCurrentScope","isDebuggerEnabled","defineIntegration","Worker","getFilenameToDebugIdMap","getClient"],"mappings":";;;;;;;AAiBA,MAAM,EAAE,WAAU,GAAIA,UAAA;AAGf,MAAM,kBAAA,GAAqB;AAElC,MAAM,gBAAA,GAAmB,EAAA;AACzB,MAAM,sBAAA,GAAyB,GAAA;AAE/B,SAAS,GAAA,CAAI,YAAoB,IAAA,EAAuB;AACtD,EAAAC,UAAA,CAAM,GAAA,CAAI,CAAA,MAAA,EAAS,OAAO,CAAA,CAAA,EAAI,GAAG,IAAI,CAAA;AACvC;AAEA,SAAS,sBAAA,GAA0F;AACjG,EAAA,OAAOC,eAAA;AACT;AAGA,SAAS,YAAA,GAA0B;AACjC,EAAA,MAAM,KAAA,GAAQC,yBAAA,CAAqBC,sBAAA,EAAkB,EAAGC,sBAAiB,CAAA;AAGzE,EAAA,KAAA,CAAM,cAAc,EAAC;AAErB,EAAA,KAAA,CAAM,kBAAkB,EAAC;AAEzB,EAAA,OAAO,KAAA;AACT;AAKA,eAAe,YAAY,MAAA,EAAuC;AAChE,EAAA,IAAI,KAAA,GAAsB,EAAE,OAAA,EAAS,KAAA,EAAM;AAC3C,EAAA,MAAM,YAAuB,EAAC;AAE9B,EAAA,KAAA,MAAW,SAAA,IAAa,MAAA,CAAO,kBAAA,EAAmB,EAAG;AACnD,IAAA,IAAI,UAAU,IAAA,EAAM;AACpB,IAAA,KAAA,GAAQ,MAAM,SAAA,CAAU,KAAA,EAAO,SAAS,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,KAAA,EAAO,YAAY,EAAC;AAC7B;AAEA,MAAM,gBAAA,GAAmB,KAAA;AAKzB,MAAM,eAAA,IAAmB,CAAC,OAAA,GAA0C,EAAC,KAAM;AACzE,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,MAAA;AAIJ,EAAA,MAAM,MAAM,sBAAA,EAAuB;AACnC,EAAA,GAAA,CAAI,qBAAA,GAAwB,YAAA;AAE5B,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,aAAa,MAAM;AACjB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAA,GAAS,YAAA,CAAa,QAAQ,OAAO,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,IACA,YAAY,MAAM;AAChB,MAAA,IAAI,MAAA,EAAQ;AAEV,QAAA,MAAA,CAAO,KAAK,CAAA,IAAA,KAAQ;AAClB,UAAA,IAAA,EAAK;AACL,UAAA,MAAA,GAAS,MAAA;AAAA,QACX,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,MAAM,MAAM,UAAA,EAAwB;AAClC,MAAA,MAAA,GAAS,UAAA;AAET,MAAA,IAAI,OAAA,CAAQ,iBAAA,IAAsB,MAAMC,uBAAA,EAAkB,EAAI;AAC5D,QAAAL,UAAA,CAAM,KAAK,kFAAkF,CAAA;AAC7F,QAAA,OAAA,CAAQ,iBAAA,GAAoB,KAAA;AAAA,MAC9B;AAIA,MAAA,YAAA,CAAa,MAAM,IAAA,CAAK,WAAA,EAAa,CAAA;AAAA,IACvC;AAAA,GACF;AACF,CAAA,CAAA;AAyCO,MAAM,cAAA,GAAiBM,uBAAkB,eAAe;AAO/D,eAAe,YAAA,CACb,QAEA,kBAAA,EACqB;AACrB,EAAA,MAAM,GAAA,GAAM,OAAO,MAAA,EAAO;AAE1B,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,OAAO,MAAM;AAAA,IAEb,CAAA;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,MAAM,CAAA;AAGzC,EAAA,OAAO,SAAS,GAAA,EAAK,UAAA;AACrB,EAAA,OAAO,SAAS,MAAA,EAAQ,WAAA;AAExB,EAAA,MAAM,WAAA,GAAc,OAAO,UAAA,EAAW;AAEtC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,cAAA,EAAe,IAAK,EAAC;AAChD,EAAA,IAAI,YAAY,GAAA,EAAK;AACnB,IAAA,WAAA,CAAY,IAAI,YAAA,GAAe,WAAA,CAAY,aAAa,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA;AAAA,EACzE;AAEA,EAAA,MAAM,OAAA,GAA2B;AAAA,IAC/B,KAAA,EAAON,WAAM,SAAA,EAAU;AAAA,IACvB,GAAA;AAAA,IACA,QAAQ,WAAA,CAAY,MAAA;AAAA,IACpB,WAAA,EAAa,YAAY,WAAA,IAAe,YAAA;AAAA,IACxC,SAAS,WAAA,CAAY,OAAA;AAAA,IACrB,MAAM,WAAA,CAAY,IAAA;AAAA,IAClB,WAAA;AAAA,IACA,aAAa,kBAAA,CAAmB,WAAA;AAAA,IAChC,YAAA,EAAc,mBAAmB,YAAA,IAAgB,gBAAA;AAAA,IACjD,YAAA,EAAc,mBAAmB,YAAA,IAAgB,sBAAA;AAAA,IACjD,iBAAA,EAAmB,CAAC,CAAC,kBAAA,CAAmB,iBAAA;AAAA,IACxC,YAAA,EAAc,mBAAmB,YAAA,IAAgB,CAAA;AAAA,IACjD,UAAA,EAAY,kBAAA,CAAmB,UAAA,IAAc,EAAC;AAAA,IAC9C;AAAA,GACF;AAEA,EAAA,IAAI,QAAQ,iBAAA,EAAmB;AAC7B,IAAA,MAAM,SAAA,GAAY,MAAM,OAAO,gBAAgB,CAAA;AAC/C,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,EAAI,EAAG;AACpB,MAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,IAAIO,0BAAA,CAAO,IAAI,IAAI,CAAA,mCAAA,EAAsC,kBAAkB,EAAE,CAAA,EAAG;AAAA,IAC7F,UAAA,EAAY,OAAA;AAAA;AAAA,IAEZ,UAAU,EAAC;AAAA,IACX,KAAK,EAAE,GAAG,OAAA,CAAQ,GAAA,EAAK,cAAc,MAAA;AAAU,GAChD,CAAA;AAED,EAAA,OAAA,CAAQ,EAAA,CAAG,QAAQ,MAAM;AAEvB,IAAA,MAAA,CAAO,SAAA,EAAU;AAAA,EACnB,CAAC,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,IAAI;AACF,MAAA,MAAM,cAAA,GAAiBJ,sBAAA,EAAkB,CAAE,UAAA,EAAW;AAGtD,MAAA,MAAM,UAAU,cAAA,GAAiB,EAAE,GAAG,cAAA,EAAgB,MAAA,EAAQ,QAAU,GAAI,KAAA,CAAA;AAE5E,MAAA,MAAA,CAAO,WAAA,CAAY,EAAE,OAAA,EAAS,WAAA,EAAaK,6BAAwB,WAAA,CAAY,WAAW,GAAG,CAAA;AAAA,IAC/F,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,QAAQ,YAAY,CAAA;AAEvB,EAAA,KAAA,CAAM,KAAA,EAAM;AAEZ,EAAA,MAAA,CAAO,EAAA,CAAG,SAAA,EAAW,CAAC,GAAA,KAAgB;AACpC,IAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,MAAA,GAAA,CAAI,kEAAkE,CAAA;AACtE,MAAAL,sBAAA,EAAkB,CAAE,WAAW,MAAS,CAAA;AAAA,IAC1C;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC,GAAA,KAAe;AACnC,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,GAAA,CAAI,oBAAoB,GAAG,CAAA;AAAA,EAC7B,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,CAAC,IAAA,KAAiB;AACpC,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,GAAA,CAAI,mBAAmB,IAAI,CAAA;AAAA,EAC7B,CAAC,CAAA;AAGD,EAAA,MAAA,CAAO,KAAA,EAAM;AAEb,EAAA,OAAO,MAAM;AAEX,IAAA,MAAA,CAAO,SAAA,EAAU;AACjB,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AACF;AAuBO,SAAS,+BAAkC,QAAA,EAAgD;AAChG,EAAA,MAAM,WAAA,GAAcM,cAAA,EAAU,EAAG,oBAAA,CAAqB,gBAAgB,CAAA;AAEtE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,QAAA,EAAS;AAAA,EAClB;AAEA,EAAA,WAAA,CAAY,UAAA,EAAW;AAEvB,EAAA,MAAM,SAAS,QAAA,EAAS;AACxB,EAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACrB,IAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,MAAM,WAAA,CAAY,aAAa,CAAA;AAAA,EACvD;AAEA,EAAA,WAAA,CAAY,WAAA,EAAY;AACxB,EAAA,OAAO,MAAA;AACT;;;;;;"}
|