diff --git a/.env.example b/.env.example index e7e1e5efa..7e5aaf89a 100644 --- a/.env.example +++ b/.env.example @@ -18,6 +18,12 @@ # [REQUIRED] Application URL (your production domain) NEXT_PUBLIC_APP_URL=https://your-domain.com +# Optional: Override the origin used for billing-provider OAuth callback URLs +# (e.g. local dev through an alternate shell port like http://localhost:8935) +# If set, the billing-provider OAuth flow will use: +# ${BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN}/api/v1/auth/providers/:providerSlug/callback +BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN=http://localhost:3000 + # [REQUIRED] NextAuth secret for session encryption (min 32 chars) # Generate with: openssl rand -base64 32 NEXTAUTH_SECRET= diff --git a/apps/web-next/next.config.js b/apps/web-next/next.config.js index ac76048d5..71358aa24 100644 --- a/apps/web-next/next.config.js +++ b/apps/web-next/next.config.js @@ -46,7 +46,10 @@ const nextConfig = { webpack: (config, { isServer }) => { // Prisma: ensure engine binaries are included in the standalone bundle. // This is the official fix for Prisma + Next.js monorepo deployments. - if (isServer) { + // Important: in `next dev`, the server output directories may not exist + // when the plugin runs, which can cause copyfile ENOENT errors. + // We only need this plugin for production (standalone) builds. + if (isServer && process.env.NODE_ENV === 'production') { config.plugins = [...config.plugins, new PrismaPlugin()]; } diff --git a/apps/web-next/prisma/seed.ts b/apps/web-next/prisma/seed.ts index 1dbe66f7d..d1eb59c41 100644 --- a/apps/web-next/prisma/seed.ts +++ b/apps/web-next/prisma/seed.ts @@ -22,7 +22,7 @@ * - Test team */ -import { PrismaClient } from '@naap/database'; +import { BILLING_PROVIDERS, PrismaClient } from '@naap/database'; import * as crypto from 'crypto'; import * as path from 'path'; @@ -653,7 +653,28 @@ async function main() { console.log(` ✅ Created ${prefCount} user plugin preferences for core plugins`); // ============================================ - // 11. Historical Stats (Observability) + // 11. Billing Providers + // ============================================ + console.log('💳 Seeding billing providers...'); + + for (const provider of BILLING_PROVIDERS) { + await prisma.billingProvider.upsert({ + where: { slug: provider.slug }, + update: { + displayName: provider.displayName, + description: provider.description, + icon: provider.icon, + authType: provider.authType, + enabled: provider.enabled, + sortOrder: provider.sortOrder, + }, + create: provider, + }); + } + console.log(` ✅ Created ${BILLING_PROVIDERS.length} billing providers`); + + // ============================================ + // 12. Historical Stats (Observability) // ============================================ console.log('📊 Creating historical stats...'); @@ -673,7 +694,7 @@ async function main() { console.log(` ✅ Created ${stats.length} historical stats`); // ============================================ - // 11. Job Feeds (Recent Activity) + // 13. Job Feeds (Recent Activity) // ============================================ console.log('📡 Creating job feeds...'); diff --git a/apps/web-next/src/app/api/v1/[plugin]/[...path]/route.ts b/apps/web-next/src/app/api/v1/[plugin]/[...path]/route.ts index 1acaf8f5e..929395af2 100644 --- a/apps/web-next/src/app/api/v1/[plugin]/[...path]/route.ts +++ b/apps/web-next/src/app/api/v1/[plugin]/[...path]/route.ts @@ -107,9 +107,6 @@ async function handleRequest( ); } - // Get auth token if present - const token = getAuthToken(request); - // Build the proxy URL const pathString = path.join('/'); const targetUrl = `${serviceUrl}/api/v1/${pathString}${request.nextUrl.search}`; @@ -118,9 +115,16 @@ async function handleRequest( const headers = new Headers(); headers.set('Content-Type', request.headers.get('Content-Type') || 'application/json'); - // Forward auth token - if (token) { - headers.set('Authorization', `Bearer ${token}`); + // Forward Authorization exactly as received when present. + // Fallback to cookie-derived Bearer token for browser flows that rely on session cookies. + const incomingAuthorization = request.headers.get('authorization'); + if (incomingAuthorization) { + headers.set('Authorization', incomingAuthorization); + } else { + const token = getAuthToken(request); + if (token) { + headers.set('Authorization', `Bearer ${token}`); + } } // Forward observability headers diff --git a/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/callback/route.ts b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/callback/route.ts new file mode 100644 index 000000000..de1a72b1c --- /dev/null +++ b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/callback/route.ts @@ -0,0 +1,156 @@ +/** + * GET /api/v1/auth/providers/:providerSlug/callback + * Provider redirects the browser here after user authentication. + */ + +import { NextRequest, NextResponse } from 'next/server'; +import { prisma } from '@/lib/db'; +import { encryptToken } from '@naap/database'; + +const DAYDREAM_API_BASE = process.env.DAYDREAM_API_BASE || 'https://api.daydream.live'; + +function escapeHtml(value: string): string { + return value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +async function exchangeTokenForApiKey(providerSlug: string, token: string): Promise { + if (providerSlug !== 'daydream') { + throw new Error(`Unsupported billing provider for OAuth callback: ${providerSlug}`); + } + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 10_000); + let response: Response; + try { + response = await fetch(`${DAYDREAM_API_BASE}/v1/api-key`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ name: 'dd_naap_linked' }), + signal: controller.signal, + }); + } catch (err) { + if ((err as { name?: string })?.name === 'AbortError') { + throw new Error('Daydream token exchange timed out'); + } + throw err; + } finally { + clearTimeout(timeoutId); + } + + if (!response.ok) { + const text = await response.text(); + throw new Error(`Daydream token exchange failed: ${response.status} ${text}`); + } + + const result = await response.json(); + const apiKey = result.api_key || result.apiKey || result.key; + if (!apiKey) { + throw new Error('Daydream token exchange failed: no API key in response'); + } + return apiKey; +} + +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ providerSlug: string }> } +): Promise { + const { providerSlug } = await params; + const searchParams = request.nextUrl.searchParams; + const token = searchParams.get('token'); + const state = searchParams.get('state'); + + const htmlResponse = (title: string, message: string, isError = false) => { + const safeTitle = escapeHtml(title); + const safeMessage = escapeHtml(message); + return new NextResponse( + ` +${safeTitle} + +${!isError ? '' : ''} + +

${safeTitle}

${safeMessage}

`, + { status: isError ? 400 : 200, headers: { 'Content-Type': 'text/html' } } + ); + }; + + if (!token || !state) { + return htmlResponse( + 'Authentication Failed', + 'Missing token or state parameter from billing provider.', + true + ); + } + + const session = await prisma.billingProviderOAuthSession.findUnique({ + where: { state }, + }); + if (!session) { + return htmlResponse( + 'Session Expired', + 'The login session has expired or was already used. Please try again from NaaP.', + true + ); + } + + if (session.providerSlug !== providerSlug) { + return htmlResponse('Authentication Failed', 'Provider/session mismatch detected.', true); + } + + if (Date.now() >= new Date(session.expiresAt).getTime()) { + await prisma.billingProviderOAuthSession + .updateMany({ + where: { + loginSessionId: session.loginSessionId, + status: 'pending', + }, + data: { status: 'expired' }, + }) + .catch(() => null); + + return htmlResponse( + 'Session Expired', + 'The login session has expired or was already used. Please try again from NaaP.', + true + ); + } + + try { + const apiKey = await exchangeTokenForApiKey(providerSlug, token); + + await prisma.billingProviderOAuthSession.update({ + where: { loginSessionId: session.loginSessionId }, + data: { + status: 'complete', + accessToken: encryptToken(apiKey), + }, + }); + + console.log( + `[billing-auth:${providerSlug}] Callback complete for session ${session.loginSessionId.slice(0, 8)}...` + ); + + return htmlResponse('Authentication Complete', 'You can close this tab and return to NaaP.'); + } catch (err) { + console.error(`[billing-auth:${providerSlug}] Callback error:`, err); + return htmlResponse( + 'Authentication Failed', + err instanceof Error ? err.message : 'Failed to authenticate with billing provider.', + true + ); + } +} diff --git a/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/result/route.ts b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/result/route.ts new file mode 100644 index 000000000..a9b1a8c11 --- /dev/null +++ b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/result/route.ts @@ -0,0 +1,120 @@ +/** + * GET /api/v1/auth/providers/:providerSlug/result?login_session_id=... + * Poll the status of a brokered billing-provider authentication session. + */ + +import { NextRequest, NextResponse } from 'next/server'; +import { validateSession } from '@/lib/api/auth'; +import { success, errors, getAuthToken } from '@/lib/api/response'; +import { prisma } from '@/lib/db'; +import { decryptToken } from '@naap/database'; + +let lastCleanup = 0; +const CLEANUP_INTERVAL_MS = 5 * 60_000; + +async function cleanupExpiredSessions(): Promise { + const now = Date.now(); + if (now - lastCleanup < CLEANUP_INTERVAL_MS) return; + lastCleanup = now; + try { + const { count } = await prisma.billingProviderOAuthSession.deleteMany({ + where: { expiresAt: { lt: new Date() } }, + }); + if (count > 0) { + console.log(`[billing-auth] Cleaned up ${count} expired OAuth sessions`); + } + } catch { + // non-critical + } +} + +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ providerSlug: string }> } +): Promise { + const { providerSlug } = await params; + const loginSessionId = request.nextUrl.searchParams.get('login_session_id'); + + if (!loginSessionId) { + return errors.badRequest('login_session_id is required'); + } + + const now = new Date(); + const session = await prisma.billingProviderOAuthSession.findUnique({ + where: { loginSessionId }, + }); + + if (!session) { + const response = success({ status: 'expired' }); + response.headers.set('Cache-Control', 'no-store'); + return response; + } + + if (session.expiresAt <= now) { + await prisma.billingProviderOAuthSession.delete({ + where: { loginSessionId }, + }).catch(() => null); + const response = success({ status: 'expired' }); + response.headers.set('Cache-Control', 'no-store'); + return response; + } + + if (session.providerSlug !== providerSlug) { + return errors.forbidden('Session does not belong to this billing provider'); + } + + if (session.naapUserId) { + const authToken = getAuthToken(request); + const authenticatedUser = authToken ? await validateSession(authToken) : null; + if (authenticatedUser?.id !== session.naapUserId) { + return errors.forbidden('Session does not belong to this user'); + } + } + + if (session.status === 'complete') { + if (session.redeemedAt) { + const response = success({ status: 'redeemed' }); + response.headers.set('Cache-Control', 'no-store'); + return response; + } + + const [redeemResult] = await prisma.$transaction([ + prisma.billingProviderOAuthSession.updateMany({ + where: { + loginSessionId, + redeemedAt: null, + status: 'complete', + expiresAt: { gt: now }, + }, + data: { redeemedAt: now }, + }), + ]); + + if (redeemResult.count !== 1) { + const response = success({ status: 'redeemed' }); + response.headers.set('Cache-Control', 'no-store'); + return response; + } + + const accessToken = session.accessToken ? decryptToken(session.accessToken) : null; + if (!accessToken) { + return errors.internal('Failed to retrieve access token'); + } + + const response = success({ + status: 'complete', + access_token: accessToken, + user_id: session.providerUserId, + expires_in: Math.max(0, Math.floor((session.expiresAt.getTime() - Date.now()) / 1000)), + }); + response.headers.set('Cache-Control', 'no-store'); + return response; + } + + // Opportunistic cleanup of expired sessions (non-blocking) + cleanupExpiredSessions().catch(() => null); + + const response = success({ status: session.status }); + response.headers.set('Cache-Control', 'no-store'); + return response; +} diff --git a/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/start/route.ts b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/start/route.ts new file mode 100644 index 000000000..313ecf009 --- /dev/null +++ b/apps/web-next/src/app/api/v1/auth/providers/[providerSlug]/start/route.ts @@ -0,0 +1,163 @@ +/** + * POST /api/v1/auth/providers/:providerSlug/start + * Start a brokered billing-provider authentication session. + */ + +import * as crypto from 'crypto'; +import { NextRequest, NextResponse } from 'next/server'; +import { success, errors, getAuthToken } from '@/lib/api/response'; +import { validateSession } from '@/lib/api/auth'; +import { prisma } from '@/lib/db'; + +const DAYDREAM_AUTH_URL = + process.env.DAYDREAM_AUTH_URL || 'https://app.daydream.live/sign-in/local'; +const LOGIN_SESSION_TTL_MS = 10 * 60 * 1000; // 10 minutes +const RATE_LIMIT_WINDOW_MS = 60_000; +const RATE_LIMIT_MAX = 5; + +const rateLimitMap = new Map(); + +function checkRateLimit(key: string): boolean { + const now = Date.now(); + const entry = rateLimitMap.get(key); + if (!entry || now >= entry.resetAt) { + rateLimitMap.set(key, { count: 1, resetAt: now + RATE_LIMIT_WINDOW_MS }); + return true; + } + if (entry.count >= RATE_LIMIT_MAX) { + return false; + } + entry.count++; + return true; +} + +function firstHeaderValue(value: string | null): string | null { + if (!value) { + return null; + } + const first = value.split(',')[0]?.trim(); + return first || null; +} + +function resolveAppUrl(request: NextRequest): string { + const isProduction = + process.env.NODE_ENV === 'production' || process.env.VERCEL_ENV === 'production'; + + // Dedicated override for OAuth callback origin (e.g. local dev through a plugin shell) + if (isProduction) { + if (!process.env.BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN) { + throw new Error('BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN must be set in production'); + } + return process.env.BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN; + } + + if (process.env.BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN) { + return process.env.BILLING_PROVIDER_OAUTH_CALLBACK_ORIGIN; + } + + const host = firstHeaderValue(request.headers.get('host')); + const forwardedHost = firstHeaderValue(request.headers.get('x-forwarded-host')); + const forwardedProto = firstHeaderValue(request.headers.get('x-forwarded-proto')); + + const isLocalHost = (value: string): boolean => + value.includes('localhost') || + value.startsWith('127.') || + value.startsWith('0.0.0.0') || + value.startsWith('[::1]'); + + if (host) { + const useForwardedHost = isLocalHost(host) && !!forwardedHost; + const resolvedHost = useForwardedHost ? (forwardedHost as string) : host; + + const protocol = isLocalHost(resolvedHost) + ? (forwardedProto || 'http') + : 'https'; + + return `${protocol}://${resolvedHost}`; + } + + // Last-resort/dev fallback: only trust forwarded headers for localhost/127.* + if (forwardedHost && isLocalHost(forwardedHost)) { + const protocol = forwardedProto || 'http'; + return `${protocol}://${forwardedHost}`; + } + + return 'http://localhost:3000'; +} + +function resolveProviderAuthUrl(providerSlug: string): string | null { + if (providerSlug === 'daydream') { + return DAYDREAM_AUTH_URL; + } + return null; +} + +export async function POST( + request: NextRequest, + { params }: { params: Promise<{ providerSlug: string }> } +): Promise { + try { + const { providerSlug } = await params; + + const clientIp = request.headers.get('x-forwarded-for')?.split(',')[0]?.trim() || 'unknown'; + if (!checkRateLimit(`billing-auth:${clientIp}`)) { + return errors.tooManyRequests + ? errors.tooManyRequests('Too many authentication requests. Please try again later.') + : new NextResponse( + JSON.stringify({ success: false, error: { code: 'RATE_LIMITED', message: 'Too many authentication requests. Please try again later.' } }), + { status: 429, headers: { 'Content-Type': 'application/json', 'Retry-After': '60' } } + ); + } + + const providerAuthUrl = resolveProviderAuthUrl(providerSlug); + if (!providerAuthUrl) { + return errors.badRequest(`Unsupported billing provider for OAuth: ${providerSlug}`); + } + + const body = await request.json().catch(() => ({})); + const gatewayNonce = (body.gateway_nonce as string) || crypto.randomBytes(32).toString('hex'); + const gatewayInstanceId = (body.gateway_instance_id as string) || null; + + const authToken = getAuthToken(request); + const authenticatedUser = authToken ? await validateSession(authToken) : null; + const naapUserId = authenticatedUser?.id ?? null; + + const loginSessionId = crypto.randomBytes(32).toString('hex'); + + // Build the callback URL that provider will redirect the browser to + const appUrl = resolveAppUrl(request); + const callbackUrl = `${appUrl}/api/v1/auth/providers/${encodeURIComponent(providerSlug)}/callback`; + + const state = crypto.randomBytes(16).toString('hex'); + + // Build auth URL with redirect back to NAAP callback + const authUrl = `${providerAuthUrl}?redirect_url=${encodeURIComponent(callbackUrl)}&state=${encodeURIComponent(state)}`; + await prisma.billingProviderOAuthSession.create({ + data: { + loginSessionId, + providerSlug, + gatewayNonce, + gatewayInstanceId, + naapUserId, + state, + status: 'pending', + accessToken: null, + providerUserId: null, + redeemedAt: null, + expiresAt: new Date(Date.now() + LOGIN_SESSION_TTL_MS), + }, + }); + + console.log(`[billing-auth:${providerSlug}] Started login session ${loginSessionId.slice(0, 8)}...`); + + return success({ + auth_url: authUrl, + login_session_id: loginSessionId, + expires_in: Math.floor(LOGIN_SESSION_TTL_MS / 1000), + poll_after_ms: 1500, + }); + } catch (err) { + console.error('[billing-auth] Error starting login:', err); + return errors.internal('Failed to start billing provider login'); + } +} diff --git a/apps/web-next/src/app/api/v1/billing-providers/route.ts b/apps/web-next/src/app/api/v1/billing-providers/route.ts index a59fcf40c..694af4079 100644 --- a/apps/web-next/src/app/api/v1/billing-providers/route.ts +++ b/apps/web-next/src/app/api/v1/billing-providers/route.ts @@ -1,13 +1,13 @@ /** - * Billing Providers Routes - * GET /api/v1/billing-providers - List enabled billing providers (public catalog) + * Billing Providers API Route + * GET /api/v1/billing-providers - List available billing providers from the catalog */ -import { NextResponse } from 'next/server'; +import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/db'; import { success, errors } from '@/lib/api/response'; -export async function GET(): Promise { +export async function GET(_request: NextRequest): Promise { try { const providers = await prisma.billingProvider.findMany({ where: { enabled: true }, @@ -24,7 +24,7 @@ export async function GET(): Promise { return success({ providers }); } catch (err) { - console.error('Billing providers list error:', err); - return errors.internal('Failed to list billing providers'); + console.error('Error fetching billing providers:', err); + return errors.internal('Failed to fetch billing providers'); } } diff --git a/apps/web-next/src/app/api/v1/daydream/sessions/route.ts b/apps/web-next/src/app/api/v1/daydream/sessions/route.ts index 9b1d97719..d8009e615 100644 --- a/apps/web-next/src/app/api/v1/daydream/sessions/route.ts +++ b/apps/web-next/src/app/api/v1/daydream/sessions/route.ts @@ -10,19 +10,30 @@ import { validateSession } from '@/lib/api/auth'; import { success, errors, getAuthToken, parsePagination } from '@/lib/api/response'; import { validateCSRF } from '@/lib/api/csrf'; -// Default API key (users can override in settings) -const DEFAULT_API_KEY = 'sk_McV4YRwF1gTVS6WEyBr4RQhnkFq4zh1revzVHpyYVzsKWa1eHT4KgxNKGyi1pUKB'; const DAYDREAM_API_BASE = 'https://api.daydream.live/v1'; +/** + * Retrieve the user's Daydream API key from their settings. + * + * BREAKING CHANGE (PR 124): The previous default/shared API key fallback has + * been removed. Users must now configure their own API key via the Daydream + * settings page or the new billing-provider OAuth flow before creating sessions. + * This improves security and per-user billing accountability. + */ async function getApiKey(userId: string): Promise { - try { - const settings = await prisma.daydreamSettings.findUnique({ - where: { userId }, - }); - return settings?.apiKey || DEFAULT_API_KEY; - } catch { - return DEFAULT_API_KEY; + const settings = await prisma.daydreamSettings.findUnique({ + where: { userId }, + }); + + const apiKey = settings?.apiKey; + if (!apiKey || typeof apiKey !== 'string' || apiKey.trim().length === 0) { + throw new Error( + 'Daydream API key is not configured. ' + + 'Please configure your API key in Daydream settings or link your account via a billing provider.' + ); } + + return apiKey; } async function createDaydreamStream(apiKey: string, params: Record) { @@ -99,7 +110,14 @@ export async function POST(request: NextRequest): Promise { const body = await request.json(); const { prompt, seed, model_id, negative_prompt } = body; - const apiKey = await getApiKey(user.id); + let apiKey: string; + try { + apiKey = await getApiKey(user.id); + } catch (err) { + return errors.badRequest( + 'Daydream API key is not configured. Configure it in Daydream settings before creating a session.' + ); + } // Get user's default settings const settings = await prisma.daydreamSettings.findUnique({ diff --git a/apps/web-next/src/app/api/v1/developer/keys/route.ts b/apps/web-next/src/app/api/v1/developer/keys/route.ts index b125ecd42..045bb7496 100644 --- a/apps/web-next/src/app/api/v1/developer/keys/route.ts +++ b/apps/web-next/src/app/api/v1/developer/keys/route.ts @@ -1,28 +1,21 @@ /** * Developer API Keys Routes * GET /api/v1/developer/keys - List user's API keys - * POST /api/v1/developer/keys - Create new API key + * POST /api/v1/developer/keys - Create new API key (provider-issued key via OAuth) */ import { NextRequest, NextResponse } from 'next/server'; -import * as crypto from 'crypto'; import { prisma } from '@/lib/db'; import { validateSession } from '@/lib/api/auth'; import { success, errors, getAuthToken, parsePagination } from '@/lib/api/response'; import { validateCSRF } from '@/lib/api/csrf'; - -function generateApiKey(): string { - return `naap_${crypto.randomBytes(24).toString('hex')}`; -} - -function hashApiKey(key: string): string { - const salt = 'naap-api-key-v1'; - return crypto.scryptSync(key, salt, 32).toString('hex'); -} - -function generateKeyLookupId(): string { - return crypto.randomBytes(8).toString('hex'); -} +import { + DevApiProjectResolutionError, + resolveDevApiProjectId, + deriveKeyLookupId, + getKeyPrefix, + hashApiKey, +} from '@naap/database'; export async function GET(request: NextRequest): Promise { try { @@ -45,6 +38,16 @@ export async function GET(request: NextRequest): Promise { orderBy: { createdAt: 'desc' }, take: pageSize, skip, + include: { + project: { select: { id: true, name: true, isDefault: true } }, + billingProvider: { + select: { + id: true, + slug: true, + displayName: true, + }, + }, + }, }), prisma.devApiKey.count({ where: { userId: user.id }, @@ -73,7 +76,6 @@ export async function POST(request: NextRequest): Promise { return errors.unauthorized('No auth token provided'); } - // Validate CSRF token const csrfError = validateCSRF(request, token); if (csrfError) { return csrfError; @@ -91,68 +93,95 @@ export async function POST(request: NextRequest): Promise { return errors.badRequest('Invalid JSON in request body'); } - const projectName = body.projectName; - const modelId = body.modelId; - const gatewayId = body.gatewayId; + const billingProviderId = body.billingProviderId as string | undefined; + const rawApiKey = body.rawApiKey as string | undefined; + const modelId = body.modelId as string | undefined; + const gatewayId = body.gatewayId as string | undefined; + const projectId = body.projectId as string | undefined; + const projectName = body.projectName as string | undefined; + const label = body.label as string | undefined; if ( - typeof projectName !== 'string' || - typeof modelId !== 'string' || - typeof gatewayId !== 'string' || - projectName.trim() === '' || - modelId.trim() === '' || - gatewayId.trim() === '' + typeof billingProviderId !== 'string' || + billingProviderId.trim() === '' ) { - return errors.badRequest('projectName, modelId, and gatewayId are required'); + return errors.badRequest('billingProviderId is required'); } - // Validate model exists in the database - const model = await prisma.devApiAIModel.findUnique({ - where: { id: modelId }, - select: { id: true }, - }); - if (!model) { - return errors.badRequest('Invalid modelId'); + if (typeof rawApiKey !== 'string' || rawApiKey.trim() === '') { + return errors.badRequest('rawApiKey is required'); } - // Validate gateway offers this model in the database - const gateway = await prisma.devApiGatewayOffer.findFirst({ - where: { modelId, gatewayId }, - select: { id: true }, + const provider = await prisma.billingProvider.findUnique({ + where: { id: billingProviderId }, + select: { id: true, enabled: true }, }); - if (!gateway) { - return errors.badRequest('Gateway does not offer this model'); + if (!provider || !provider.enabled) { + return errors.badRequest('Invalid or disabled billing provider'); } - const rawKey = generateApiKey(); - const keyHash = hashApiKey(rawKey); - const keyLookupId = generateKeyLookupId(); + let resolvedModelId: string | undefined; + if (modelId && typeof modelId === 'string' && modelId.trim() !== '') { + const model = await prisma.devApiAIModel.findUnique({ + where: { id: modelId }, + select: { id: true }, + }); + if (!model) { + return errors.badRequest('Invalid modelId'); + } + resolvedModelId = model.id; + } - const billingProviderId = typeof body.billingProviderId === 'string' - ? body.billingProviderId.trim() || null - : null; - const projectId = typeof body.projectId === 'string' - ? body.projectId.trim() || null - : null; + let resolvedGatewayOfferId: string | undefined; + if (resolvedModelId && gatewayId && typeof gatewayId === 'string' && gatewayId.trim() !== '') { + const gateway = await prisma.devApiGatewayOffer.findFirst({ + where: { modelId: resolvedModelId, gatewayId }, + select: { id: true }, + }); + if (!gateway) { + return errors.badRequest('Gateway does not offer this model'); + } + resolvedGatewayOfferId = gateway.id; + } + + let resolvedProjectId: string; + try { + resolvedProjectId = await resolveDevApiProjectId({ + prisma, + userId: user.id, + projectId, + projectName, + }); + } catch (error) { + if (error instanceof DevApiProjectResolutionError) { + return errors.badRequest(error.message); + } + throw error; + } + + const keyLookupId = deriveKeyLookupId(rawApiKey); + const keyPrefix = getKeyPrefix(keyLookupId); + const keyHash = hashApiKey(rawApiKey); + const resolvedLabel = label && typeof label === 'string' && label.trim() ? label.trim() : null; const apiKey = await prisma.devApiKey.create({ data: { userId: user.id, - projectName, - modelId, - gatewayOfferId: gateway.id, - keyHash, - keyPrefix: rawKey.slice(0, 8), - keyLookupId, + projectId: resolvedProjectId, billingProviderId, - projectId, + modelId: resolvedModelId || null, + gatewayOfferId: resolvedGatewayOfferId || null, + keyLookupId, + keyPrefix, + keyHash, + label: resolvedLabel, status: 'ACTIVE', }, }); return success({ key: apiKey, - rawApiKey: rawKey, + rawApiKey, warning: 'Store this key securely. It will not be shown again.', }); } catch (err) { diff --git a/apps/web-next/src/app/api/v1/developer/projects/route.ts b/apps/web-next/src/app/api/v1/developer/projects/route.ts index c78ccca61..e630e7f02 100644 --- a/apps/web-next/src/app/api/v1/developer/projects/route.ts +++ b/apps/web-next/src/app/api/v1/developer/projects/route.ts @@ -33,6 +33,7 @@ export async function GET(request: NextRequest): Promise { name: true, isDefault: true, createdAt: true, + _count: { select: { apiKeys: true } }, }, }); @@ -100,6 +101,7 @@ export async function POST(request: NextRequest): Promise { name: true, isDefault: true, createdAt: true, + _count: { select: { apiKeys: true } }, }, }); diff --git a/apps/web-next/src/app/api/v1/integrations/route.ts b/apps/web-next/src/app/api/v1/integrations/route.ts index a874953f2..85acf0ed6 100644 --- a/apps/web-next/src/app/api/v1/integrations/route.ts +++ b/apps/web-next/src/app/api/v1/integrations/route.ts @@ -7,13 +7,8 @@ import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/db'; import { success, errors } from '@/lib/api/response'; -/** - * Single source of truth for known integration metadata. - * The IntegrationConfig DB model stores only type, displayName, and configured. - * displayName, category, and description are enriched from this map so the - * response shape is consistent regardless of whether DB rows exist. - */ const INTEGRATION_META: Record = { + daydream: { displayName: 'Daydream', category: 'video', description: 'Real-time AI video generation via Daydream' }, openai: { displayName: 'OpenAI', category: 'ai', description: 'GPT models for AI-powered features' }, anthropic: { displayName: 'Anthropic', category: 'ai', description: 'Claude AI models' }, 'aws-s3': { displayName: 'AWS S3', category: 'storage', description: 'Amazon S3 for file storage' }, @@ -22,8 +17,6 @@ const INTEGRATION_META: Record ({ type, displayName: meta.displayName, @@ -40,13 +33,11 @@ export async function GET(_request: NextRequest): Promise { type: true, displayName: true, configured: true, - // Exclude credentials — never expose secrets to clients }, }); - if (rows.length > 0) { - return success({ - integrations: rows.map((r) => { + const integrations = rows.length > 0 + ? rows.map((r) => { const meta = INTEGRATION_META[r.type]; return { type: r.type, @@ -55,12 +46,10 @@ export async function GET(_request: NextRequest): Promise { category: meta?.category ?? 'other', description: meta?.description ?? '', }; - }), - }); - } + }) + : DEFAULT_INTEGRATIONS; - // No rows yet — return the default catalogue - return success({ integrations: DEFAULT_INTEGRATIONS }); + return success({ integrations }); } catch (err) { console.error('Error fetching integrations:', err); return errors.internal('Failed to fetch integrations'); diff --git a/bin/sync-plugin-registry.ts b/bin/sync-plugin-registry.ts index 4af934000..b0d214e51 100644 --- a/bin/sync-plugin-registry.ts +++ b/bin/sync-plugin-registry.ts @@ -22,7 +22,6 @@ */ import { PrismaClient } from '../packages/database/src/generated/client/index.js'; -import { BILLING_PROVIDERS } from '../packages/database/src/billing-providers.js'; import { discoverPlugins, toWorkflowPluginData, @@ -30,6 +29,7 @@ import { toPluginVersionData, getBundleUrl, } from '../packages/database/src/plugin-discovery.js'; +import { BILLING_PROVIDERS } from '@naap/database'; import * as path from 'path'; import { fileURLToPath } from 'url'; diff --git a/package-lock.json b/package-lock.json index 401e11ea8..e32ffa921 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30452,7 +30452,7 @@ }, "devDependencies": { "@types/cors": "^2.8.17", - "@types/express": "^5.0.0", + "@types/express": "^4.17.25", "@types/node": "^20.19.33", "@types/uuid": "^10.0.0", "tsx": "^4.19.2", diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma index ce27f59d4..f04046be2 100644 --- a/packages/database/prisma/schema.prisma +++ b/packages/database/prisma/schema.prisma @@ -175,10 +175,33 @@ model BillingProvider { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + devApiKeys DevApiKey[] + @@index([enabled]) @@schema("public") } +model BillingProviderOAuthSession { + loginSessionId String @id + state String @unique + providerSlug String + gatewayNonce String + gatewayInstanceId String? + naapUserId String? + status String @default("pending") + accessToken String? + providerUserId String? + redeemedAt DateTime? + expiresAt DateTime + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@index([expiresAt]) + @@index([providerSlug]) + @@index([naapUserId]) + @@schema("public") +} + // ============================================ // CORE PLATFORM - TEAMS & ORGANIZATIONS // ============================================ @@ -1382,6 +1405,8 @@ model DevApiProject { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + apiKeys DevApiKey[] + @@unique([userId, name]) @@index([userId]) @@schema("plugin_developer_api") @@ -1390,21 +1415,23 @@ model DevApiProject { model DevApiKey { id String @id @default(uuid()) userId String - projectName String - modelId String - model DevApiAIModel @relation(fields: [modelId], references: [id], onDelete: Cascade) + projectId String? + project DevApiProject? @relation(fields: [projectId], references: [id], onDelete: Cascade) + billingProviderId String? + billingProvider BillingProvider? @relation(fields: [billingProviderId], references: [id], onDelete: Restrict) + modelId String? + model DevApiAIModel? @relation(fields: [modelId], references: [id], onDelete: Cascade) gatewayOfferId String? gatewayOffer DevApiGatewayOffer? @relation(fields: [gatewayOfferId], references: [id], onDelete: SetNull) - keyHash String @unique + keyLookupId String? @unique keyPrefix String label String? + projectName String? + keyHash String? @unique status DevApiKeyStatus @default(ACTIVE) createdAt DateTime @default(now()) lastUsedAt DateTime? revokedAt DateTime? - projectId String? - billingProviderId String? - keyLookupId String? usageLogs DevApiUsageLog[] diff --git a/packages/database/src/dev-api/key-utils.ts b/packages/database/src/dev-api/key-utils.ts new file mode 100644 index 000000000..a07c5019b --- /dev/null +++ b/packages/database/src/dev-api/key-utils.ts @@ -0,0 +1,35 @@ +/** + * Shared API key utility functions for the developer API. + * + * Used by both the Next.js API route and the developer-api plugin backend + * to ensure consistent key parsing, lookup ID derivation, and hashing. + */ + +import * as crypto from 'crypto'; + +const KEY_HASH_SALT = 'naap-api-key-v1'; + +export function parseApiKey(key: string): { lookupId: string; secret: string } | null { + const m = key.match(/^naap_([0-9a-f]{16})_([0-9a-f]{48})$/); + return m ? { lookupId: m[1], secret: m[2] } : null; +} + +export function deriveKeyLookupId(rawKey: string): string { + const parsed = parseApiKey(rawKey); + if (parsed) { + return parsed.lookupId; + } + return crypto.randomBytes(8).toString('hex'); +} + +export function getKeyPrefix(lookupId: string): string { + return `naap_${lookupId}...`; +} + +/** + * Hash an API key for storage using scrypt KDF. + * Works for both NaaP-native and provider-issued keys. + */ +export function hashApiKey(key: string): string { + return crypto.scryptSync(key, KEY_HASH_SALT, 32).toString('hex'); +} diff --git a/packages/database/src/dev-api/resolveDevApiProject.ts b/packages/database/src/dev-api/resolveDevApiProject.ts new file mode 100644 index 000000000..f98341cb6 --- /dev/null +++ b/packages/database/src/dev-api/resolveDevApiProject.ts @@ -0,0 +1,117 @@ +import { Prisma } from '../generated/client/index.js'; +import type { PrismaClient } from '../generated/client/index.js'; + +export class DevApiProjectResolutionError extends Error { + public readonly code: 'INVALID_PROJECT_ID'; + + constructor(message: string, code: 'INVALID_PROJECT_ID' = 'INVALID_PROJECT_ID') { + super(message); + this.name = 'DevApiProjectResolutionError'; + this.code = code; + } +} + +function isPrismaUniqueConstraintError(error: unknown): boolean { + if (error instanceof Prisma.PrismaClientKnownRequestError) { + return error.code === 'P2002'; + } + return ( + typeof error === 'object' && + error !== null && + 'code' in error && + (error as { code?: string }).code === 'P2002' + ); +} + +export async function resolveDevApiProjectId(params: { + prisma: Pick; + userId: string; + projectId?: string | undefined; + projectName?: string | undefined; + defaultProjectName?: string | undefined; +}): Promise { + const { + prisma, + userId, + projectId, + projectName, + defaultProjectName = 'Default', + } = params; + + if (projectId) { + const project = await prisma.devApiProject.findUnique({ + where: { id: projectId }, + select: { id: true, userId: true }, + }); + if (!project || project.userId !== userId) { + throw new DevApiProjectResolutionError('Invalid projectId'); + } + return project.id; + } + + if (projectName && projectName.trim()) { + const trimmedName = projectName.trim(); + let project = await prisma.devApiProject.findUnique({ + where: { userId_name: { userId, name: trimmedName } }, + select: { id: true }, + }); + + if (!project) { + try { + project = await prisma.devApiProject.create({ + data: { + userId, + name: trimmedName, + isDefault: false, + }, + select: { id: true }, + }); + } catch (error) { + if (!isPrismaUniqueConstraintError(error)) { + throw error; + } + project = await prisma.devApiProject.findUnique({ + where: { userId_name: { userId, name: trimmedName } }, + select: { id: true }, + }); + if (!project) { + throw error; + } + } + } + + return project.id; + } + + let defaultProject = await prisma.devApiProject.findFirst({ + where: { userId, isDefault: true }, + select: { id: true }, + }); + + if (!defaultProject) { + try { + defaultProject = await prisma.devApiProject.create({ + data: { + userId, + name: defaultProjectName, + isDefault: true, + }, + select: { id: true }, + }); + } catch (error) { + if (!isPrismaUniqueConstraintError(error)) { + throw error; + } + defaultProject = await prisma.devApiProject.findFirst({ + where: { userId, isDefault: true }, + select: { id: true }, + }); + if (!defaultProject) { + throw error; + } + } + } + + return defaultProject.id; +} + diff --git a/packages/database/src/dev-api/token-encryption.ts b/packages/database/src/dev-api/token-encryption.ts new file mode 100644 index 000000000..b33f5edde --- /dev/null +++ b/packages/database/src/dev-api/token-encryption.ts @@ -0,0 +1,60 @@ +/** + * Symmetric encryption for sensitive OAuth session data at rest. + * + * Uses AES-256-GCM with a key derived from NEXTAUTH_SECRET. + * Each encryption produces a unique IV, ensuring ciphertexts are + * never repeated even for identical plaintexts. + */ + +import * as crypto from 'crypto'; + +const ALGORITHM = 'aes-256-gcm'; +const IV_LENGTH = 12; +const AUTH_TAG_LENGTH = 16; +const KEY_INFO = 'naap-oauth-token-encryption-v1'; + +function deriveEncryptionKey(): Buffer { + const secret = process.env.NEXTAUTH_SECRET; + if (!secret) { + throw new Error('NEXTAUTH_SECRET is required for token encryption'); + } + return crypto.createHash('sha256').update(`${KEY_INFO}:${secret}`).digest(); +} + +/** + * Encrypt a plaintext string. Returns a hex-encoded string of iv:authTag:ciphertext. + */ +export function encryptToken(plaintext: string): string { + const key = deriveEncryptionKey(); + const iv = crypto.randomBytes(IV_LENGTH); + const cipher = crypto.createCipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH }); + + const encrypted = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]); + const authTag = cipher.getAuthTag(); + + return `${iv.toString('hex')}:${authTag.toString('hex')}:${encrypted.toString('hex')}`; +} + +/** + * Decrypt a token previously encrypted with encryptToken(). + * Returns null if decryption fails (tampered, wrong key, etc.). + */ +export function decryptToken(ciphertext: string): string | null { + try { + const parts = ciphertext.split(':'); + if (parts.length !== 3) return null; + + const iv = Buffer.from(parts[0], 'hex'); + const authTag = Buffer.from(parts[1], 'hex'); + const encrypted = Buffer.from(parts[2], 'hex'); + + const key = deriveEncryptionKey(); + const decipher = crypto.createDecipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH }); + decipher.setAuthTag(authTag); + + const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]); + return decrypted.toString('utf8'); + } catch { + return null; + } +} diff --git a/packages/database/src/index.ts b/packages/database/src/index.ts index 2f3bc0a95..9e7e784a3 100644 --- a/packages/database/src/index.ts +++ b/packages/database/src/index.ts @@ -13,6 +13,14 @@ import { PrismaClient as GeneratedPrismaClient, Prisma } from './generated/clien // Re-export all types from generated client export * from './generated/client/index.js'; +// Re-export catalog constants +export { BILLING_PROVIDERS } from './billing-providers'; + +// Shared developer-api utilities +export { DevApiProjectResolutionError, resolveDevApiProjectId } from './dev-api/resolveDevApiProject'; +export { parseApiKey, deriveKeyLookupId, getKeyPrefix, hashApiKey } from './dev-api/key-utils'; +export { encryptToken, decryptToken } from './dev-api/token-encryption'; + // Type for transaction client export type TransactionClient = Omit< GeneratedPrismaClient, @@ -267,8 +275,5 @@ export async function withRetry( throw lastError; } -// Billing provider catalog -export { BILLING_PROVIDERS } from './billing-providers'; - // Default export for convenience export default prisma; diff --git a/packages/types/src/user.ts b/packages/types/src/user.ts index 90860e58c..63d87ce8a 100644 --- a/packages/types/src/user.ts +++ b/packages/types/src/user.ts @@ -14,7 +14,6 @@ export interface AuthUser { address: string | null; roles: string[]; permissions: Array<{ resource: string; action: string }> | string[]; - // Compatibility aliases used by shell context / plugin SDK avatar?: string | null; walletAddress?: string | null; } diff --git a/packages/utils/src/csrf.ts b/packages/utils/src/csrf.ts index 8b83b1d09..1966ed54e 100644 --- a/packages/utils/src/csrf.ts +++ b/packages/utils/src/csrf.ts @@ -23,7 +23,7 @@ */ import * as crypto from 'crypto'; -import type { Request, Response, NextFunction } from 'express'; +import type { NextFunction, Request, RequestHandler, Response } from 'express'; // CSRF token store: sessionToken -> { token, createdAt } // In production, this should use Redis for distributed deployments @@ -144,11 +144,11 @@ const DEFAULT_OPTIONS: Required> & Pick { // Skip safe methods if (opts.skipMethods.includes(req.method)) { return next(); @@ -198,17 +198,20 @@ export function createCsrfMiddleware(options: CsrfMiddlewareOptions = {}) { } log('[CSRF] Rejected request', logData); - return res.status(403).json({ + res.status(403).json({ success: false, error: { code: 'CSRF_INVALID', message: 'Invalid or missing CSRF token', }, }); + return; } next(); }; + + return csrfMiddleware; } /** diff --git a/plugins/developer-api/backend/src/server.ts b/plugins/developer-api/backend/src/server.ts index 00b289be0..7a323b703 100644 --- a/plugins/developer-api/backend/src/server.ts +++ b/plugins/developer-api/backend/src/server.ts @@ -7,24 +7,29 @@ import { createAuthMiddleware } from '@naap/plugin-server-sdk'; config(); +function sanitizeForLog(value: unknown): string { + return String(value).replace(/[\n\r\t\x00-\x1f\x7f-\x9f\u2028\u2029]/g, ''); +} + const pluginConfig = JSON.parse( readFileSync(new URL('../../plugin.json', import.meta.url), 'utf8') ); const app = express(); const PORT = process.env.PORT || pluginConfig.backend?.devPort || 4007; -app.use(cors()); -app.use(express.json()); app.use((req, res, next) => { - const headerId = req.headers['x-request-id']; - const requestId = (typeof headerId === 'string' && headerId.trim().length > 0) - ? headerId.trim() - : crypto.randomUUID(); + const incoming = req.header('x-request-id'); + const requestId = + typeof incoming === 'string' && incoming.trim().length > 0 + ? incoming.trim() + : crypto.randomUUID(); (req as any).requestId = requestId; res.setHeader('x-request-id', requestId); next(); }); +app.use(cors()); +app.use(express.json()); app.use(createAuthMiddleware({ publicPaths: ['/healthz'], })); @@ -35,11 +40,18 @@ app.use(createAuthMiddleware({ // Dynamic import for Prisma client (generated) let prisma: any = null; +let resolveDevApiProjectId: any = null; +let DevApiProjectResolutionError: any = null; async function initDatabase() { try { - const { prisma: dbClient } = await import('@naap/database'); - prisma = dbClient; + const db = await import('@naap/database'); + prisma = db.prisma; + resolveDevApiProjectId = db.resolveDevApiProjectId; + DevApiProjectResolutionError = db.DevApiProjectResolutionError; + if (db.deriveKeyLookupId) deriveKeyLookupId = db.deriveKeyLookupId; + if (db.getKeyPrefix) getKeyPrefix = db.getKeyPrefix; + if (db.hashApiKey) hashApiKey = db.hashApiKey; await prisma.$connect(); console.log('✅ Database connected'); return true; @@ -72,28 +84,17 @@ const inMemoryGatewayOffers: Record = { const inMemoryApiKeys: any[] = []; const inMemoryProjects: any[] = []; +const inMemoryBillingProviders = [ + { id: 'bp-daydream', slug: 'daydream', displayName: 'Daydream', description: 'AI-powered billing via Daydream', icon: 'cloud', authType: 'oauth' }, +]; // ============================================ // Utility Functions // ============================================ -function generateApiKey(): string { - return `naap_${crypto.randomBytes(24).toString('hex')}`; -} - -function hashApiKey(key: string): string { - // Use scrypt (a proper KDF) instead of bare SHA-256 - const salt = 'naap-api-key-v1'; - return crypto.scryptSync(key, salt, 32).toString('hex'); -} - -function getKeyPrefix(key: string): string { - return key.substring(0, 12) + '...'; -} - -function generateKeyLookupId(): string { - return crypto.randomBytes(8).toString('hex'); -} +let deriveKeyLookupId: (rawKey: string) => string = (_key: string) => crypto.randomBytes(8).toString('hex'); +let getKeyPrefix: (lookupId: string) => string = (id: string) => `naap_${id}...`; +let hashApiKey: (key: string) => string = (key: string) => crypto.scryptSync(key, 'naap-api-key-v1', 32).toString('hex'); function getRequestUserId(req: express.Request): string { const user = (req as any).user; @@ -216,6 +217,7 @@ app.get('/api/v1/developer/projects', async (req, res) => { name: true, isDefault: true, createdAt: true, + _count: { select: { apiKeys: true } }, }, }); return res.json({ projects }); @@ -223,22 +225,14 @@ app.get('/api/v1/developer/projects', async (req, res) => { const projects = inMemoryProjects .filter((p: any) => p.userId === userId) - .map((p: any, idx: number) => ({ p, idx })) - .sort((a: any, b: any) => { - const aIsDefault = Boolean(a.p?.isDefault); - const bIsDefault = Boolean(b.p?.isDefault); - if (aIsDefault !== bIsDefault) return aIsDefault ? -1 : 1; - - const aName = String(a.p?.name ?? ''); - const bName = String(b.p?.name ?? ''); - const nameCmp = aName.localeCompare(bName); - if (nameCmp !== 0) return nameCmp; - - // Stable tiebreaker (preserve original order). - return a.idx - b.idx; - }) - .map(({ p }: any) => p); - + .map((p: any) => ({ + ...p, + _count: { + apiKeys: inMemoryApiKeys.filter( + (k: any) => k.userId === userId && k.project?.id === p.id + ).length, + }, + })); res.json({ projects }); } catch (error) { console.error('Error fetching projects:', error); @@ -299,6 +293,35 @@ app.post('/api/v1/developer/projects', async (req, res) => { } }); +// ============================================ +// Billing Providers +// ============================================ + +app.get('/api/v1/developer/billing-providers', async (_req, res) => { + try { + if (prisma) { + const providers = await prisma.billingProvider.findMany({ + where: { enabled: true }, + orderBy: { sortOrder: 'asc' }, + select: { + id: true, + slug: true, + displayName: true, + description: true, + icon: true, + authType: true, + }, + }); + return res.json({ providers }); + } + + res.json({ providers: inMemoryBillingProviders }); + } catch (error) { + console.error('Error fetching billing providers:', error); + res.status(500).json({ error: 'Internal server error' }); + } +}); + // ============================================ // API Keys // ============================================ @@ -310,16 +333,25 @@ app.get('/api/v1/developer/keys', async (req, res) => { if (prisma) { const keys = await prisma.devApiKey.findMany({ where: { userId }, - include: { model: true }, orderBy: { createdAt: 'desc' }, + include: { + project: { select: { id: true, name: true, isDefault: true } }, + billingProvider: { + select: { id: true, slug: true, displayName: true }, + }, + model: { select: { id: true, name: true } }, + gatewayOffer: { select: { id: true, gatewayId: true, gatewayName: true } }, + }, }); const formatted = keys.map((k: any) => ({ id: k.id, - projectName: k.projectName, - modelId: k.modelId, + project: k.project, + billingProvider: k.billingProvider, + label: k.label ?? null, modelName: k.model?.name || 'Unknown', + gatewayName: k.gatewayOffer?.gatewayName || 'Unknown', keyPrefix: k.keyPrefix, - status: k.status.toLowerCase(), + status: k.status, createdAt: k.createdAt.toISOString(), lastUsedAt: k.lastUsedAt?.toISOString() || null, })); @@ -337,19 +369,32 @@ app.get('/api/v1/developer/keys', async (req, res) => { app.get('/api/v1/developer/keys/:id', async (req, res) => { try { const userId = getRequestUserId(req); + if (prisma) { const key = await prisma.devApiKey.findFirst({ - where: { id: req.params.id, userId }, - include: { model: true }, + where: { + id: req.params.id, + userId, + }, + include: { + project: { select: { id: true, name: true, isDefault: true } }, + billingProvider: { + select: { id: true, slug: true, displayName: true }, + }, + model: { select: { id: true, name: true } }, + gatewayOffer: { select: { id: true, gatewayId: true, gatewayName: true } }, + }, }); if (!key) return res.status(404).json({ error: 'API key not found' }); return res.json({ id: key.id, - projectName: key.projectName, - modelId: key.modelId, + project: key.project, + billingProvider: key.billingProvider, + label: key.label ?? null, modelName: key.model?.name || 'Unknown', + gatewayName: key.gatewayOffer?.gatewayName || 'Unknown', keyPrefix: key.keyPrefix, - status: key.status.toLowerCase(), + status: key.status, createdAt: key.createdAt.toISOString(), lastUsedAt: key.lastUsedAt?.toISOString() || null, }); @@ -366,75 +411,111 @@ app.get('/api/v1/developer/keys/:id', async (req, res) => { app.post('/api/v1/developer/keys', async (req, res) => { try { - const { projectName, modelId, gatewayId, billingProviderId, projectId } = req.body; + const { billingProviderId, rawApiKey, projectId, projectName, modelId, gatewayId, label } = req.body; const userId = getRequestUserId(req); - if (!projectName || !modelId || !gatewayId) { - return res.status(400).json({ error: 'projectName, modelId, and gatewayId required' }); + if (!billingProviderId) { + return res.status(400).json({ error: 'billingProviderId is required' }); + } + if (!rawApiKey || typeof rawApiKey !== 'string') { + return res.status(400).json({ error: 'rawApiKey is required' }); } - const rawKey = generateApiKey(); - const keyHash = hashApiKey(rawKey); - const keyPrefix = getKeyPrefix(rawKey); - const keyLookupId = generateKeyLookupId(); + const keyLookupId = deriveKeyLookupId(rawApiKey); + const keyPrefix = getKeyPrefix(keyLookupId); if (prisma) { - const model = await prisma.devApiAIModel.findUnique({ where: { id: modelId } }); - if (!model) return res.status(400).json({ error: 'Invalid modelId' }); - - const gatewayOffer = await prisma.devApiGatewayOffer.findFirst({ - where: { modelId, gatewayId }, + const provider = await prisma.billingProvider.findUnique({ + where: { id: billingProviderId }, + select: { id: true, enabled: true }, }); - if (!gatewayOffer) return res.status(400).json({ error: 'Gateway does not offer this model' }); + if (!provider || !provider.enabled) { + return res.status(400).json({ error: 'Invalid or disabled billing provider' }); + } + + let resolvedModelId: string | undefined; + if (modelId && typeof modelId === 'string' && modelId.trim() !== '') { + const model = await prisma.devApiAIModel.findUnique({ where: { id: modelId } }); + if (!model) return res.status(400).json({ error: 'Invalid modelId' }); + resolvedModelId = model.id; + } + + let resolvedGatewayOfferId: string | undefined; + if (resolvedModelId && gatewayId && typeof gatewayId === 'string' && gatewayId.trim() !== '') { + const gatewayOffer = await prisma.devApiGatewayOffer.findFirst({ + where: { modelId: resolvedModelId, gatewayId }, + }); + if (!gatewayOffer) return res.status(400).json({ error: 'Gateway does not offer this model' }); + resolvedGatewayOfferId = gatewayOffer.id; + } + + let resolvedProjectId: string; + try { + resolvedProjectId = await resolveDevApiProjectId({ + prisma, + userId, + projectId, + projectName, + }); + } catch (err: unknown) { + if (DevApiProjectResolutionError && err instanceof DevApiProjectResolutionError) { + return res.status(400).json({ error: (err as Error).message }); + } + throw err; + } + + const resolvedLabel = label && typeof label === 'string' && label.trim() ? label.trim() : null; + const keyHash = hashApiKey(rawApiKey); const newKey = await prisma.devApiKey.create({ data: { userId, - projectName, - modelId, - gatewayOfferId: gatewayOffer.id, - keyHash, - keyPrefix, + projectId: resolvedProjectId, + billingProviderId, + modelId: resolvedModelId || null, + gatewayOfferId: resolvedGatewayOfferId || null, keyLookupId, - billingProviderId: billingProviderId || null, - projectId: projectId || null, + keyPrefix, + keyHash, + label: resolvedLabel, status: 'ACTIVE', }, - include: { model: true }, + include: { + project: { select: { id: true, name: true, isDefault: true } }, + billingProvider: { + select: { id: true, slug: true, displayName: true }, + }, + }, }); return res.status(201).json({ key: { id: newKey.id, - projectName: newKey.projectName, - modelId: newKey.modelId, - modelName: newKey.model?.name || 'Unknown', + project: newKey.project, + billingProvider: newKey.billingProvider, keyPrefix: newKey.keyPrefix, - status: 'active', + label: newKey.label, + status: newKey.status, createdAt: newKey.createdAt.toISOString(), }, - rawApiKey: rawKey, + rawApiKey, warning: 'Store this key securely. It will not be shown again.', }); } - // In-memory fallback - const model = inMemoryModels.find(m => m.id === modelId); - if (!model) return res.status(400).json({ error: 'Invalid modelId' }); - - const gateway = (inMemoryGatewayOffers[modelId] || []).find(g => g.gatewayId === gatewayId); - if (!gateway) return res.status(400).json({ error: 'Gateway does not offer this model' }); + const fallbackProject = inMemoryProjects.find((p: any) => p.id === projectId) || { id: 'proj-default', name: 'Default', isDefault: true }; + const fallbackProvider = inMemoryBillingProviders.find(p => p.id === billingProviderId) || inMemoryBillingProviders[0]; + const fallbackLabel = label && typeof label === 'string' && label.trim() ? label.trim() : null; const newKey = { id: `key-${Date.now()}`, userId, - projectName, - modelId, - modelName: model.name, - gatewayId, - gatewayName: gateway.gatewayName, + project: { id: fallbackProject.id, name: fallbackProject.name, isDefault: fallbackProject.isDefault }, + billingProvider: { id: fallbackProvider.id, slug: fallbackProvider.slug, displayName: fallbackProvider.displayName }, keyPrefix, - status: 'active', + keyLookupId, + label: fallbackLabel, + status: 'ACTIVE', createdAt: new Date().toISOString(), lastUsedAt: null, }; @@ -442,7 +523,7 @@ app.post('/api/v1/developer/keys', async (req, res) => { res.status(201).json({ key: newKey, - rawApiKey: rawKey, + rawApiKey, warning: 'Store this key securely. It will not be shown again.', }); } catch (error) { @@ -454,11 +535,12 @@ app.post('/api/v1/developer/keys', async (req, res) => { app.delete('/api/v1/developer/keys/:id', async (req, res) => { try { const userId = getRequestUserId(req); + if (prisma) { const key = await prisma.devApiKey.findUnique({ where: { id: req.params.id } }); - if (!key) return res.status(404).json({ error: 'API key not found' }); - if (key.userId !== userId) return res.status(404).json({ error: 'API key not found' }); - + if (!key || key.userId !== userId) { + return res.status(404).json({ error: 'API key not found' }); + } await prisma.devApiKey.update({ where: { id: req.params.id }, data: { status: 'REVOKED', revokedAt: new Date() }, @@ -469,8 +551,7 @@ app.delete('/api/v1/developer/keys/:id', async (req, res) => { const keyIndex = inMemoryApiKeys.findIndex((k: any) => k.id === req.params.id && k.userId === userId); if (keyIndex === -1) return res.status(404).json({ error: 'API key not found' }); - - inMemoryApiKeys[keyIndex].status = 'revoked'; + inMemoryApiKeys[keyIndex].status = 'REVOKED'; res.json({ message: 'API key revoked', key: inMemoryApiKeys[keyIndex] }); } catch (error) { console.error('Error revoking key:', error); @@ -508,7 +589,7 @@ app.get('/api/v1/developer/usage', async (req, res) => { // Fallback res.json({ totalKeys: inMemoryApiKeys.length, - activeKeys: inMemoryApiKeys.filter(k => k.status === 'active').length, + activeKeys: inMemoryApiKeys.filter(k => k.status?.toUpperCase?.() === 'ACTIVE').length, totalRequests: 0, totalCost: '0.0000', }); @@ -523,19 +604,27 @@ app.get('/api/v1/developer/usage', async (req, res) => { // ============================================ app.use((err: any, _req: express.Request, res: express.Response, _next: express.NextFunction) => { - const requestId = (_req as any)?.requestId; - console.error('Unhandled error:', { - requestId, - method: _req.method, - path: _req.originalUrl, - error: err instanceof Error - ? { name: err.name, message: err.message, stack: err.stack } - : err, - }); - + const req = _req as any; + const requestId = req.requestId || req.headers?.['x-request-id'] || 'unknown'; + const method = req.method || 'UNKNOWN'; + const path = req.originalUrl || req.url || 'unknown'; + + console.error( + '[developer-api][%s] Unhandled error on %s %s:', + sanitizeForLog(requestId), + sanitizeForLog(method), + sanitizeForLog(path), + err + ); res.status(500).json({ - error: 'Internal server error', - requestId, + success: false, + error: { + code: 'INTERNAL_SERVER_ERROR', + message: 'Internal server error', + requestId: sanitizeForLog(requestId), + method: sanitizeForLog(method), + path: sanitizeForLog(path), + }, }); }); diff --git a/plugins/developer-api/frontend/src/App.tsx b/plugins/developer-api/frontend/src/App.tsx index 69385c005..b65ba8ef1 100644 --- a/plugins/developer-api/frontend/src/App.tsx +++ b/plugins/developer-api/frontend/src/App.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { MemoryRouter, Routes, Route } from 'react-router-dom'; -import { createPlugin } from '@naap/plugin-sdk'; +import { createPlugin, type ShellContext } from '@naap/plugin-sdk'; import { DeveloperView } from './pages/DeveloperView'; import './globals.css'; @@ -20,7 +20,9 @@ const plugin = createPlugin({ }); /** @deprecated Use SDK hooks (useShell, useApiClient, etc.) instead */ -export const getShellContext = plugin.getContext; +export const getShellContext = (plugin as typeof plugin & { + getContext: () => ShellContext | null; +}).getContext; export const manifest = plugin; export const mount = plugin.mount; diff --git a/plugins/developer-api/frontend/src/pages/DeveloperView.tsx b/plugins/developer-api/frontend/src/pages/DeveloperView.tsx index b0ce7c5a8..edcb1d057 100644 --- a/plugins/developer-api/frontend/src/pages/DeveloperView.tsx +++ b/plugins/developer-api/frontend/src/pages/DeveloperView.tsx @@ -1,7 +1,22 @@ -import React, { useState, useEffect, useCallback } from 'react'; +import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { Box, Key, BarChart3, BookOpen, Plus, Copy, RefreshCw, Trash2, Search, CreditCard, Cloud } from 'lucide-react'; -import { Card, Badge } from '@naap/ui'; +import { + Box, + Key, + BarChart3, + BookOpen, + Plus, + Copy, + Trash2, + Search, + Check, + AlertTriangle, + Shield, + Loader2, + CreditCard, + Cloud, +} from 'lucide-react'; +import { Card, Badge, Modal } from '@naap/ui'; import { getServiceOrigin } from '@naap/plugin-sdk'; type TabId = 'models' | 'api-keys' | 'usage' | 'docs'; @@ -19,12 +34,19 @@ interface AIModel { badges: string[]; } +interface ApiKeyProject { + id: string; + name: string; + isDefault: boolean; +} + interface ApiKey { id: string; - projectName: string; - modelName: string; - gatewayName: string; + project: ApiKeyProject; + billingProvider: { id: string; slug: string; displayName: string }; status: string; + keyPrefix: string; + label: string | null; createdAt: string; lastUsedAt: string | null; } @@ -38,26 +60,134 @@ interface BillingProviderInfo { authType: string; } -// '' in production (same-origin), 'http://localhost:4011' in dev +interface ProjectInfo { + id: string; + name: string; + isDefault: boolean; +} + const BASE_URL = getServiceOrigin('developer-api'); +async function fetchCsrfToken(): Promise { + try { + const res = await fetch('/api/v1/auth/csrf', { credentials: 'include' }); + if (res.ok) { + const data = await res.json(); + return data.data?.token || data.token || ''; + } + } catch (err) { + console.warn('Failed to fetch CSRF token:', err); + } + return ''; +} + +function delayWithAbort(ms: number, signal: AbortSignal): Promise { + return new Promise((resolve, reject) => { + const timeoutId = window.setTimeout(() => { + signal.removeEventListener('abort', onAbort); + resolve(); + }, ms); + + const onAbort = () => { + window.clearTimeout(timeoutId); + signal.removeEventListener('abort', onAbort); + reject(new Error('Polling aborted')); + }; + + if (signal.aborted) { + onAbort(); + return; + } + + signal.addEventListener('abort', onAbort); + }); +} + const tabs = [ - { id: 'models' as TabId, label: 'Models', icon: }, { id: 'api-keys' as TabId, label: 'API Keys', icon: }, { id: 'usage' as TabId, label: 'Usage & Billing', icon: }, + { id: 'models' as TabId, label: 'Models', icon: }, { id: 'docs' as TabId, label: 'Docs', icon: }, ]; +const selectClassName = + 'w-full bg-bg-tertiary border border-white/10 rounded-xl py-3 px-4 text-sm text-text-primary focus:outline-none focus:border-accent-blue appearance-none cursor-pointer'; + +const inputClassName = + 'w-full bg-bg-tertiary border border-white/10 rounded-xl py-3 px-4 text-sm text-text-primary focus:outline-none focus:border-accent-blue'; + export const DeveloperView: React.FC = () => { - const [activeTab, setActiveTab] = useState('models'); + const [activeTab, setActiveTab] = useState('api-keys'); const [models, setModels] = useState([]); const [apiKeys, setApiKeys] = useState([]); const [_loading, setLoading] = useState(true); const [searchQuery, setSearchQuery] = useState(''); + const [showRevoked, setShowRevoked] = useState(false); + const [projectFilterId, setProjectFilterId] = useState<'__all__' | string>('__all__'); + + const [showCreateModal, setShowCreateModal] = useState(false); + const [createStep, setCreateStep] = useState<'form' | 'oauth' | 'success'>('form'); + const [createdRawKey, setCreatedRawKey] = useState(''); + const [createError, setCreateError] = useState(''); + const [creating, setCreating] = useState(false); + const [keyCopied, setKeyCopied] = useState(false); + + const [projects, setProjects] = useState([]); const [billingProviders, setBillingProviders] = useState([]); + const [modalDataLoading, setModalDataLoading] = useState(false); + const [selectedProjectId, setSelectedProjectId] = useState(''); + const [newProjectName, setNewProjectName] = useState(''); + const [newKeyLabel, setNewKeyLabel] = useState(''); + const [selectedBillingProviderId, setSelectedBillingProviderId] = useState(''); - useEffect(() => { - loadData(); + const [revokeKeyId, setRevokeKeyId] = useState(null); + const [revoking, setRevoking] = useState(false); + const pollAbortControllerRef = useRef(null); + + const revokedCount = useMemo( + () => apiKeys.filter(k => (k.status || '').toUpperCase() === 'REVOKED').length, + [apiKeys] + ); + + const displayedKeys = useMemo(() => { + const filteredByRevoked = showRevoked + ? apiKeys + : apiKeys.filter(k => (k.status || '').toUpperCase() !== 'REVOKED'); + const filtered = projectFilterId === '__all__' + ? filteredByRevoked + : filteredByRevoked.filter(k => k.project?.id === projectFilterId); + return [...filtered].sort((a, b) => { + const aDefault = a.project?.isDefault ? 1 : 0; + const bDefault = b.project?.isDefault ? 1 : 0; + if (aDefault !== bDefault) return bDefault - aDefault; + return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); + }); + }, [apiKeys, showRevoked, projectFilterId]); + + const loadData = useCallback(async () => { + setLoading(true); + try { + const [modelsJson, keysJson, projectsJson] = await Promise.all([ + fetch(`${BASE_URL}/api/v1/developer/models`).then(r => r.json()), + fetch('/api/v1/developer/keys').then(r => r.json()), + fetch('/api/v1/developer/projects').then(r => r.json()), + ]); + setModels((modelsJson.data ?? modelsJson).models || []); + setApiKeys((keysJson.data ?? keysJson).keys || []); + setProjects((projectsJson.data ?? projectsJson).projects || []); + } catch (err) { + console.error('Failed to load data:', err); + setModels(getMockModels()); + setApiKeys([]); + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { loadData(); }, [loadData]); + + useEffect(() => () => { + pollAbortControllerRef.current?.abort(); }, []); const loadBillingProviders = useCallback(async () => { @@ -73,28 +203,228 @@ export const DeveloperView: React.FC = () => { if (activeTab === 'usage') loadBillingProviders(); }, [activeTab, loadBillingProviders]); - const loadData = async () => { - setLoading(true); + const loadModalData = useCallback(async () => { + setModalDataLoading(true); try { - const [modelsJson, keysJson] = await Promise.all([ - fetch(`${BASE_URL}/api/v1/developer/models`).then(r => r.json()), - fetch(`${BASE_URL}/api/v1/developer/keys`).then(r => r.json()), + const [projectsJson, bpJson] = await Promise.all([ + fetch('/api/v1/developer/projects').then(r => r.json()), + fetch('/api/v1/billing-providers').then(r => r.json()), ]); - // API routes wrap responses in { success, data: { models/keys }, meta } - const modelsPayload = modelsJson.data ?? modelsJson; - const keysPayload = keysJson.data ?? keysJson; - setModels(modelsPayload.models || []); - setApiKeys(keysPayload.keys || []); + const projectList: ProjectInfo[] = (projectsJson.data ?? projectsJson).projects || []; + const providerList: BillingProviderInfo[] = (bpJson.data ?? bpJson).providers || []; + setProjects(projectList); + setBillingProviders(providerList); + if (projectList.length > 0) { + setSelectedProjectId((projectList.find(p => p.isDefault) || projectList[0]).id); + } + if (providerList.length > 0) { + setSelectedBillingProviderId(providerList[0].id); + } } catch (err) { - console.error('Failed to load data:', err); - setModels(getMockModels()); - setApiKeys(getMockKeys()); + console.error('Failed to load modal data:', err); } finally { - setLoading(false); + setModalDataLoading(false); + } + }, []); + + const openCreateModal = useCallback(() => { + setCreateStep('form'); + setCreatedRawKey(''); + setCreateError(''); + setCreating(false); + setKeyCopied(false); + setSelectedProjectId(''); + setNewProjectName(''); + setNewKeyLabel(''); + setSelectedBillingProviderId(''); + setShowCreateModal(true); + loadModalData(); + }, [loadModalData]); + + const closeCreateModal = useCallback(() => { + pollAbortControllerRef.current?.abort(); + setShowCreateModal(false); + if (createStep === 'success') loadData(); + }, [createStep, loadData]); + + const handleCreateKey = useCallback(async () => { + setCreateError(''); + const resolvedProjectId = selectedProjectId === '__new__' ? undefined : selectedProjectId; + const resolvedProjectName = selectedProjectId === '__new__' ? newProjectName.trim() : undefined; + + if (selectedProjectId === '__new__' && !resolvedProjectName) { + setCreateError('Please enter a project name.'); + return; } - }; + if (!selectedBillingProviderId) { + setCreateError('Please select a billing provider.'); + return; + } + const selectedProvider = billingProviders.find(bp => bp.id === selectedBillingProviderId); + if (!selectedProvider) { + setCreateError('Selected billing provider not found.'); + return; + } + const providerSlug = selectedProvider.slug; + + setCreating(true); + setCreateStep('oauth'); + + try { + pollAbortControllerRef.current?.abort(); + const abortController = new AbortController(); + pollAbortControllerRef.current = abortController; + + const startCsrfToken = await fetchCsrfToken(); + const startRes = await fetch(`/api/v1/auth/providers/${encodeURIComponent(providerSlug)}/start`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': startCsrfToken }, + credentials: 'include', + body: JSON.stringify({}), + }); + if (!startRes.ok) { + setCreateError('Failed to start authentication with billing provider.'); + setCreateStep('form'); + setCreating(false); + return; + } + const startData = await startRes.json(); + const authUrl = startData.data?.auth_url || startData.auth_url; + const loginSessionId = startData.data?.login_session_id || startData.login_session_id; + if (!authUrl || !loginSessionId) { + setCreateError('Missing auth URL from billing provider.'); + setCreateStep('form'); + setCreating(false); + return; + } + + window.open(authUrl, '_blank', 'noopener,noreferrer'); + + const pollInterval = startData.data?.poll_after_ms ?? startData.poll_after_ms ?? 2000; + const pollTimeout = (startData.data?.expires_in ?? startData.expires_in ?? 180) * 1000; + const started = Date.now(); + let providerApiKey: string | null = null; + + while (Date.now() - started < pollTimeout && !abortController.signal.aborted) { + try { + await delayWithAbort(pollInterval, abortController.signal); + } catch { + break; + } + + if (abortController.signal.aborted) { + break; + } + + try { + const pollRes = await fetch( + `/api/v1/auth/providers/${encodeURIComponent(providerSlug)}/result?login_session_id=${encodeURIComponent( + loginSessionId + )}`, + { signal: abortController.signal } + ); + if (!pollRes.ok) break; + const pollData = await pollRes.json(); + const status = pollData.data?.status || pollData.status; + if (status === 'complete') { + providerApiKey = pollData.data?.access_token || pollData.access_token; + break; + } + if (status === 'redeemed') { + setCreateError('Authentication redeemed. Please request a new token.'); + setCreateStep('form'); + setCreating(false); + return; + } + if (status === 'expired' || status === 'denied') { + setCreateError(`Authentication ${status}. Please try again.`); + setCreateStep('form'); + setCreating(false); + return; + } + } catch { + break; + } + } + + if (abortController.signal.aborted) { + return; + } - const filteredModels = models.filter(m => + if (!providerApiKey) { + setCreateError('Authentication timed out. Please try again.'); + setCreateStep('form'); + setCreating(false); + return; + } + + const csrfToken = await fetchCsrfToken(); + const res = await fetch('/api/v1/developer/keys', { + method: 'POST', + headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrfToken }, + credentials: 'include', + body: JSON.stringify({ + billingProviderId: selectedBillingProviderId, + rawApiKey: providerApiKey, + projectId: resolvedProjectId || undefined, + projectName: resolvedProjectName || undefined, + label: newKeyLabel.trim() || undefined, + }), + }); + const json = await res.json(); + const payload = json.data ?? json; + + if (!res.ok) { + setCreateError(payload.error || json.error || 'Failed to create API key'); + setCreateStep('form'); + return; + } + + setCreatedRawKey(providerApiKey); + setCreateStep('success'); + } catch (err) { + if (pollAbortControllerRef.current?.signal.aborted) { + return; + } + console.error('Error creating key:', err); + setCreateError('Network error. Please try again.'); + setCreateStep('form'); + } finally { + pollAbortControllerRef.current = null; + setCreating(false); + } + }, [selectedProjectId, newProjectName, newKeyLabel, selectedBillingProviderId, billingProviders]); + + const handleCopyKey = useCallback(async () => { + try { + await navigator.clipboard.writeText(createdRawKey); + setKeyCopied(true); + setTimeout(() => setKeyCopied(false), 2000); + } catch { /* fallback */ } + }, [createdRawKey]); + + const handleRevokeKey = useCallback(async () => { + if (!revokeKeyId) return; + setRevoking(true); + try { + const csrfToken = await fetchCsrfToken(); + const res = await fetch(`/api/v1/developer/keys/${revokeKeyId}`, { + method: 'DELETE', + headers: { 'X-CSRF-Token': csrfToken }, + credentials: 'include', + }); + if (res.ok) { + await loadData(); + } + } catch (err) { + console.error('Error revoking key:', err); + } finally { + setRevoking(false); + setRevokeKeyId(null); + } + }, [revokeKeyId, loadData]); + + const filteredModels = models.filter(m => m.name.toLowerCase().includes(searchQuery.toLowerCase()) || m.type.toLowerCase().includes(searchQuery.toLowerCase()) ); @@ -105,20 +435,14 @@ export const DeveloperView: React.FC = () => {

Developer API Manager

Explore models, manage API keys, and track usage

-
- - + + {activeTab === 'models' && (
- setSearchQuery(e.target.value)} + setSearchQuery(e.target.value)} className="w-full bg-bg-secondary border border-white/10 rounded-xl py-3 pl-10 pr-4 text-sm focus:outline-none focus:border-accent-blue" />
@@ -159,41 +481,107 @@ export const DeveloperView: React.FC = () => { )} {activeTab === 'api-keys' && ( -
+
-

{apiKeys.length} API keys

- + )} +
+
- -
- {apiKeys.map((key) => ( -
-
-
- -
-
-

{key.projectName}

-

{key.modelName} • {key.gatewayName}

-
-
-
- {key.status} - - - -
-
- ))} - {apiKeys.length === 0 && ( -
- No API keys yet. Create one to get started. -
- )} -
-
+ {displayedKeys.length > 0 ? ( + +
+ + + + + + + + + + + + {displayedKeys.map((key) => ( + + + + + + + + ))} + +
NameProjectSecret KeyCreatedStatus
+ {key.label || key.keyPrefix} + + {key.project ? ( +
+ {key.project.name} + {key.project.isDefault && ( + Default + )} +
+ ) : ( + + )} +
+ {key.keyPrefix} + + + {new Date(key.createdAt).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })} + + +
+ {key.status} + {(key.status || '').toUpperCase() !== 'REVOKED' && ( + + )} +
+
+
+
+ ) : ( + +
+ No API keys yet. Create one to get started. +
+
+ )}
)} @@ -269,6 +657,137 @@ export const DeveloperView: React.FC = () => { )} + + {/* ===== Create Key Modal ===== */} + + {createStep === 'form' && ( +
+
+ + + {selectedProjectId === '__new__' && ( + setNewProjectName(e.target.value)} className={`${inputClassName} mt-2`} autoFocus /> + )} +
+
+ + setNewKeyLabel(e.target.value)} className={inputClassName} /> +

A friendly name for this key. If left empty, the key prefix will be shown.

+
+
+ +

You will be redirected to authenticate with the selected provider.

+ {modalDataLoading ? ( +
+ + Loading billing providers... +
+ ) : billingProviders.length === 0 ? ( +
+ +
+

No billing providers available

+

Contact your administrator to configure a billing provider.

+
+
+ ) : ( + + )} +
+ {createError && ( +
+ {createError} +
+ )} +
+ + +
+
+ )} + {createStep === 'oauth' && ( +
+ +
+

Waiting for authentication...

+

Complete the sign-in in the new tab that opened. This page will update automatically.

+
+
+ )} + {createStep === 'success' && ( +
+
+ +
+

Store this key securely

+

This is the only time your API key will be shown. Copy it now and store it in a safe place.

+
+
+
+ +
+ + {createdRawKey} + + +
+
+
+ +
+
+ )} +
+ + {/* ===== Revoke Confirmation Modal ===== */} + setRevokeKeyId(null)} title="Revoke API Key" size="sm"> +
+

+ Are you sure you want to revoke this API key? This action cannot be undone and any applications using this key will stop working. +

+
+ + +
+
+
); }; @@ -281,11 +800,4 @@ function getMockModels(): AIModel[] { ]; } -function getMockKeys(): ApiKey[] { - return [ - { id: 'key-1', projectName: 'Production App', modelName: 'SDXL Turbo', gatewayName: 'Gateway Alpha', status: 'active', createdAt: '2024-01-15', lastUsedAt: '2024-01-20' }, - { id: 'key-2', projectName: 'Development', modelName: 'Stable Diffusion 1.5', gatewayName: 'Gateway Beta', status: 'active', createdAt: '2024-01-10', lastUsedAt: null }, - ]; -} - export default DeveloperView; diff --git a/plugins/developer-api/frontend/tsconfig.json b/plugins/developer-api/frontend/tsconfig.json index bd939d9a9..1c318460a 100644 --- a/plugins/developer-api/frontend/tsconfig.json +++ b/plugins/developer-api/frontend/tsconfig.json @@ -2,13 +2,23 @@ "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", - "rootDir": "./src", + "rootDir": "../../../", + "composite": false, + "noEmit": true, + "noUnusedLocals": false, + "noImplicitReturns": false, "paths": { - "@naap/ui": ["../../../packages/ui/src/index.ts"], - "@naap/types": ["../../../packages/types/src/index.ts"], - "@naap/theme": ["../../../packages/theme/src/index.ts"], - "@naap/utils": ["../../../packages/utils/src/index.ts"] + "@naap/plugin-sdk": ["packages/plugin-sdk/src/index.ts"], + "@naap/plugin-sdk/*": ["packages/plugin-sdk/src/*"], + "@naap/ui": ["packages/ui/src/index.ts"], + "@naap/types": ["packages/types/src/index.ts"], + "@naap/theme": ["packages/theme/src/index.ts"], + "@naap/utils": ["packages/utils/src/index.ts"] } }, - "include": ["src/**/*"] + "include": [ + "src/**/*", + "../../../packages/ui/src/**/*", + "../../../packages/types/src/**/*" + ] } diff --git a/plugins/developer-api/frontend/tsconfig.tsbuildinfo b/plugins/developer-api/frontend/tsconfig.tsbuildinfo index 27c6c44ae..c03011f0a 100644 --- a/plugins/developer-api/frontend/tsconfig.tsbuildinfo +++ b/plugins/developer-api/frontend/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@types/react-dom/client.d.ts","../../../node_modules/react-router/dist/development/router-5iovts3c.d.mts","../../../node_modules/react-router/dist/development/browser-bepxnebw.d.mts","../../../node_modules/react-router/dist/development/dom-export.d.mts","../../../node_modules/react-router/dist/development/register-cs_tixsm.d.mts","../../../node_modules/react-router/dist/development/index-react-server-client-iojgloqv.d.mts","../../../node_modules/react-router/node_modules/cookie/dist/index.d.ts","../../../node_modules/react-router/dist/development/index.d.mts","../../../node_modules/react-router-dom/dist/index.d.mts","../../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/index.d.ts","../../../packages/types/src/manifest.ts","../../../packages/types/src/plugin.ts","../../../packages/types/src/errors.ts","../../../packages/types/src/transformers.ts","../../../packages/types/src/debug.ts","../../../packages/types/src/index.ts","../../../node_modules/motion-utils/dist/index.d.ts","../../../node_modules/motion-dom/dist/index.d.ts","../../../node_modules/framer-motion/dist/types.d-cq4vrm6h.d.ts","../../../node_modules/framer-motion/dist/types/index.d.ts","../../../node_modules/lucide-react/dist/lucide-react.d.ts","../../../packages/ui/src/card.tsx","../../../node_modules/@types/react-dom/index.d.ts","../../../packages/ui/src/modal.tsx","../../../packages/ui/src/badge.tsx","../../../packages/ui/src/stat.tsx","../../../packages/ui/src/versionbadge.tsx","../../../packages/ui/src/releasenotesviewer.tsx","../../../packages/ui/src/datatable.tsx","../../../packages/ui/src/tooltip.tsx","../../../packages/ui/src/searchinput.tsx","../../../packages/ui/src/filterbar.tsx","../../../packages/ui/src/toggle.tsx","../../../packages/ui/src/tabs.tsx","../../../packages/ui/src/emptystate.tsx","../../../packages/ui/src/loadingstate.tsx","../../../packages/ui/src/confirmdialog.tsx","../../../packages/ui/src/index.ts","./src/pages/developerview.tsx","./src/app.tsx","./src/main.tsx","./src/mount.tsx","../../../node_modules/@types/aria-query/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/deep-eql/index.d.ts","../../../node_modules/assertion-error/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/compression/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/@types/d3-array/index.d.ts","../../../node_modules/@types/d3-color/index.d.ts","../../../node_modules/@types/d3-ease/index.d.ts","../../../node_modules/@types/d3-interpolate/index.d.ts","../../../node_modules/@types/d3-path/index.d.ts","../../../node_modules/@types/d3-time/index.d.ts","../../../node_modules/@types/d3-scale/index.d.ts","../../../node_modules/@types/d3-shape/index.d.ts","../../../node_modules/@types/d3-timer/index.d.ts","../../../node_modules/@types/ssh2/index.d.ts","../../../node_modules/@types/docker-modem/index.d.ts","../../../node_modules/@types/dockerode/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../../../node_modules/eslint/lib/types/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/jsonfile/index.d.ts","../../../node_modules/@types/jsonfile/utils.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/http-proxy/index.d.ts","../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/inquirer/lib/objects/choice.d.ts","../../../node_modules/@types/inquirer/lib/objects/separator.d.ts","../../../node_modules/@types/inquirer/lib/objects/choices.d.ts","../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../../../node_modules/@types/inquirer/lib/prompts/base.d.ts","../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../../../node_modules/@types/inquirer/lib/prompts/input.d.ts","../../../node_modules/@types/inquirer/lib/prompts/list.d.ts","../../../node_modules/@types/inquirer/lib/prompts/number.d.ts","../../../node_modules/@types/inquirer/lib/prompts/password.d.ts","../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../../../node_modules/@types/inquirer/lib/ui/baseui.d.ts","../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../../../node_modules/@types/inquirer/lib/utils/events.d.ts","../../../node_modules/@types/inquirer/lib/utils/readline.d.ts","../../../node_modules/@types/inquirer/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/mime-types/index.d.ts","../../../node_modules/@types/morgan/index.d.ts","../../../node_modules/@types/multer/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/pg-types/index.d.ts","../../../node_modules/pg-protocol/dist/messages.d.ts","../../../node_modules/pg-protocol/dist/serializer.d.ts","../../../node_modules/pg-protocol/dist/parser.d.ts","../../../node_modules/pg-protocol/dist/index.d.ts","../../../node_modules/@types/pg/lib/type-overrides.d.ts","../../../node_modules/@types/pg/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/tar/node_modules/minipass/index.d.ts","../../../node_modules/@types/tar/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[120,169,186,187],[109,120,169,186,187],[120,169,186,187,253],[109,110,111,112,113,120,169,186,187],[109,111,120,169,186,187],[120,169,183,186,187,219,220],[120,169,180,183,186,187,212,219,222,223,224],[120,169,186,187,226,227],[120,169,186,187,218,237],[120,169,183,186,187,219],[120,169,186,187,241],[120,169,186,187,245],[120,169,186,187,244],[120,169,183,186,187,189,201,219,249],[120,169,180,186,187,201,219,249,250],[120,169,186,187,252,258],[120,169,186,187,252,253,254],[120,169,186,187,255],[120,169,180,183,186,187,219,229,230,231],[120,169,186,187,221,230,232,236],[120,169,181,186,187,219,260,261],[120,169,180,183,185,186,187,189,201,212,219],[120,169,186,187,196,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473],[120,169,186,187,474],[120,169,186,187,454,455,474],[120,169,186,187,196,452,457,474],[120,169,186,187,196,458,459,474],[120,169,186,187,196,458,474],[120,169,186,187,196,452,458,474],[120,169,186,187,196,464,474],[120,169,186,187,196,474],[120,169,186,187,196,452],[120,169,186,187,457],[120,169,186,187,196],[120,169,186,187,475],[120,169,186,187,476],[120,169,181,186,187,212,219],[120,169,174,186,187,219,479],[120,169,180,186,187,219],[120,169,186,187,201,237],[120,166,167,169,186,187],[120,168,169,186,187],[169,186,187],[120,169,174,186,187,204],[120,169,170,175,180,186,187,189,201,212],[120,169,170,171,180,186,187,189],[115,116,117,120,169,186,187],[120,169,172,186,187,213],[120,169,173,174,181,186,187,190],[120,169,174,186,187,201,209],[120,169,175,177,180,186,187,189],[120,168,169,176,186,187],[120,169,177,178,186,187],[120,169,179,180,186,187],[120,168,169,180,186,187],[120,169,180,181,182,186,187,201,212],[120,169,180,181,182,186,187,196,201,204],[120,162,169,177,180,183,186,187,189,201,212],[120,169,180,181,183,184,186,187,189,201,209,212],[120,169,183,185,186,187,201,209,212],[118,119,120,121,122,123,124,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218],[120,169,180,186,187],[120,169,186,187,188,212],[120,169,177,180,186,187,189,201],[120,169,186,187,190],[120,169,186,187,191],[120,168,169,186,187,192],[120,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218],[120,169,186,187,194],[120,169,186,187,195],[120,169,180,186,187,196,197],[120,169,186,187,196,198,213,215],[120,169,181,186,187],[120,169,180,186,187,201,202,204],[120,169,186,187,203,204],[120,169,186,187,201,202],[120,169,186,187,204],[120,169,186,187,205],[120,166,169,186,187,201,206],[120,169,180,186,187,207,208],[120,169,186,187,207,208],[120,169,174,186,187,189,201,209],[120,169,186,187,210],[120,169,186,187,189,211],[120,169,183,186,187,195,212],[120,169,174,186,187,213],[120,169,186,187,201,214],[120,169,186,187,188,215],[120,169,186,187,216],[120,162,169,186,187],[120,162,169,180,182,186,187,192,201,204,212,214,215,217],[120,169,186,187,201,218],[120,169,180,186,187,201,209,219,486,487,490,491,492],[120,169,186,187,492],[64,120,169,186,187],[62,63,120,169,186,187],[120,169,183,186,187,201,219],[120,169,186,187,495,534],[120,169,186,187,495,519,534],[120,169,186,187,534],[120,169,186,187,495],[120,169,186,187,495,520,534],[120,169,186,187,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533],[120,169,186,187,520,534],[120,169,181,186,187,201,219],[120,169,183,186,187,219,233,235],[120,169,181,186,187,201,219,234],[120,169,180,183,185,186,187,189,201,219],[120,169,181,186,187,201,218,219,536],[120,169,180,186,187,201,219],[120,169,186,187,201,219],[120,169,180,183,185,186,187,189,201,209,212,218,219],[120,169,186,187,540],[120,169,186,187,252,256,257],[120,169,186,187,258],[64,83,120,169,186,187],[64,65,82,83,84,120,169,186,187],[82,120,169,186,187],[120,169,186,187,219,487,488,489],[120,169,186,187,219],[120,169,186,187,201,219,487],[69,73,120,169,186,187],[64,67,120,169,186,187],[64,67,68,120,169,186,187],[64,67,68,70,71,72,120,169,186,187],[67,120,169,186,187],[120,169,186,187,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,280,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,320,321,322,323,324,325,326,327,328,329,330,331,333,334,335,336,337,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,383,384,385,387,396,398,399,400,401,402,403,405,406,408,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451],[120,169,186,187,309],[120,169,186,187,265,268],[120,169,186,187,267],[120,169,186,187,267,268],[120,169,186,187,264,265,266,268],[120,169,186,187,265,267,268,425],[120,169,186,187,268],[120,169,186,187,264,267,309],[120,169,186,187,267,268,425],[120,169,186,187,267,433],[120,169,186,187,265,267,268],[120,169,186,187,277],[120,169,186,187,300],[120,169,186,187,321],[120,169,186,187,267,268,309],[120,169,186,187,268,316],[120,169,186,187,267,268,309,327],[120,169,186,187,267,268,327],[120,169,186,187,268,368],[120,169,186,187,268,309],[120,169,186,187,264,268,386],[120,169,186,187,264,268,387],[120,169,186,187,409],[120,169,186,187,393,395],[120,169,186,187,404],[120,169,186,187,393],[120,169,186,187,264,268,386,393,394],[120,169,186,187,386,387,395],[120,169,186,187,407],[120,169,186,187,264,268,393,394,395],[120,169,186,187,266,267,268],[120,169,186,187,264,268],[120,169,186,187,265,267,387,388,389,390],[120,169,186,187,309,387,388,389,390],[120,169,186,187,387,389],[120,169,186,187,267,388,389,391,392,396],[120,169,186,187,264,267],[120,169,186,187,268,411],[120,169,186,187,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384],[120,169,186,187,397],[60,120,169,186,187],[120,134,138,169,186,187,212],[120,134,169,186,187,201,212],[120,129,169,186,187],[120,131,134,169,186,187,209,212],[120,169,186,187,189,209],[120,129,169,186,187,219],[120,131,134,169,186,187,189,212],[120,126,127,130,133,169,180,186,187,201,212],[120,134,141,169,186,187],[120,126,132,169,186,187],[120,134,155,156,169,186,187],[120,130,134,169,186,187,204,212,219],[120,155,169,186,187,219],[120,128,129,169,186,187,219],[120,134,169,186,187],[120,128,129,130,131,132,133,134,135,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,156,157,158,159,160,161,169,186,187],[120,134,149,169,186,187],[120,134,141,142,169,186,187],[120,132,134,142,143,169,186,187],[120,133,169,186,187],[120,126,129,134,169,186,187],[120,134,138,142,143,169,186,187],[120,138,169,186,187],[120,132,134,137,169,186,187,212],[120,126,131,134,141,169,186,187],[120,169,186,187,201],[120,129,134,155,169,186,187,217,219],[61,65,120,169,186,187],[61,65,76,77,78,79,80,120,169,186,187],[61,65,75,81,120,169,186,187],[61,65,77,120,169,186,187],[61,64,65,120,169,186,187],[61,64,65,86,89,120,169,186,187],[61,64,65,86,120,169,186,187],[61,65,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,120,169,186,187],[61,64,65,86,88,120,169,186,187],[61,64,65,85,86,90,120,169,186,187],[61,64,65,87,120,169,186,187],[61,64,65,66,74,81,104,120,169,186,187],[61,64,65,66,74,104,120,169,186,187],[61,64,65,85,86,103,120,169,186,187]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"cf8db38686dfd74567ea692266fe44fbb32fa0e25fc0888ad6fc40e65873607e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},{"version":"bb1defa1a08700b1e4bca6d31d71ab137470871700b4b72dfd1506c6a9af03ca","impliedFormat":99},{"version":"04facf0c6ec863ff0ff5780c908313666389fb7d90673681e7571bd3890eab47","impliedFormat":99},{"version":"d95afe4f740ab14975ebbb03a9961d2c6165b898263faa10e4160e1026378248","affectsGlobalScope":true,"impliedFormat":99},{"version":"38ee113ab61ab569ef0f19156c5bc151bcacbee452f8bb55d77a1ad70db2f1e7","impliedFormat":99},{"version":"cb12e0ab92bafebc165d5a044711fffe68b5961d79a24a3c1700439c7bb24015","impliedFormat":99},{"version":"79c164aa4f8a8418df7717206ea52508f72743224a6b9c705f10724c6dbb5548","impliedFormat":1},{"version":"7ac140c23c0afb88f671eac40389baff2a9937209fbe2c6900f4afafeddcabca","impliedFormat":99},{"version":"9f49b8064f63b7b3275a8247692967da2458734ea9afcf5ffd86b5c177674740","impliedFormat":99},{"version":"980d84ab65a61d1979a22e5cd3322672e75fb148392b6903d08ccef59bbf530c","impliedFormat":1},"8e3e82df6ed7b3fe94d7fc2b8e5d71ebc6724e400698c18862c4443480a3dee6","8a6ae0e60534cb81d3d79de621357270b036fdad65ac3e74f553001b9b99f5ec","0c91e42627debfe26a9723497458b8a07ee8a66572a3e891923a62f8a4c70076","15912aa9216e0a7a7bbb3665bc1ec3b1db90d48b969c5df564e14e1cbd58481e","ff715b17dc0b68a36f4b986fd80cb4d4c73cdf8c7092e9a53e28a2a012a63ccf","9926817bc324b2f370201bb15275ea76ae78cc6d81849c02838c68946c345bcf",{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"eaa30156f4022edc65c4667064daaefeebd07dd3a3314a74bd56c7e802ed89b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"64d4c41b11c1c817ddd39c4febdba05b560e4bdc4aef196ca48799b732ec8241","impliedFormat":1},{"version":"4a741801ad41aea632943b273c6d11fa5d270aa23de84f7aa959cdf65fe04422","impliedFormat":1},{"version":"5f0258de817857a01db5d1ab9aed63c4e88af54b62829fd4777c4325fa8ab2ef","impliedFormat":1},"14197415f74395d8abe14faa28acf8e5d2090bfa1d86dce90e1433b8ed8d9c31",{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},"3b1b90d67ed9f8dbc5771c2ceb6e9f944706e8913b497b52cc6116441859f504","ccdf36fc1bc4ec9894d9d7d637d0d80de5260fdbb381601335aee5b3f135d543","8fa214dce4ca47c55d73e8a817fa8ea306d3f0d618174619d000cc85476aa8e3","d0a3f4cc133af3b104c7fb1d743e0470dd878395d857fff5017e785ce604b544","9946047e7de48ffbc0983a20ee0b632dfd50b06e29fd45998a5a701b910b9b3c","76f1906ea4b1fab5c47fc0ba6bfc170cf7b7a409245a5e397d6d38b805bfabcf","6ad3ba7e2e8b848e2aa7b232002edc1133d0a9859c6d0021ce7c485fa0e0aee2","6494e03e0ad75abc28d677937f671e185943c94432dfdd3730393489ef5540e6","a6959104ff0c8ddacb5d3dd2a54beaa3711dfccd3d76428413ead1ee496f8a9f","55610a794506cbdf45098545e4bcf17060d9e2d944d1aea96e070e89c80a3594","54d682c1c408ff10784d92ba94c8112547fb191d67a5e4256712008e56a68875","5b1780df1f37410452f91c6567a7907d1ac1d5ab909fca649982f08000ffc86e","7f2507417641509fb6200105724fb151c34f306e6a56bbd2b808930cc8efb6ed","dabfbc6748f777c0e336da1e5f835503312ad44b246985beb0507cbf45496a2f","6750e4f93dc82d2b43929d1dcb00afa02700e789d8b17e870416b330a8e0c2f9",{"version":"cb721ba2ce0ff4a277931fc89d8f3c433644b7e6f067a9d0419cfb81d936c0ac","signature":"6c9b399ac1e6fa8d2c3f43619a6449a739117856533b5a4d7c1fa137d68fe8b4"},{"version":"8742dc5abacf67a284c8b74e6ed3aa6d702126535712a8e47380d428ea3f86a5","signature":"3b88effe45de543badb12b4c9b8f582798b5537ea25f2596505942f5e0b2d3e0"},{"version":"a239414887d97a2108550168d9e8bd776b12db5cead2ec75c23fb43493a8bd73","signature":"faf58641108da48c4bb93192465e993754c0f118af8bb2b17e3a4abadc10ad17"},{"version":"3f6b002d07db1dbb756bb4fde7a789c49cc4a346c4a945dd1c3698b1b319b2ea","signature":"4baaaa3e8b86e74d742cc75323be8691b0255ef721e822245c87521623506339"},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"511a5f4f77165dc1b73ceae1e28b4a8f78f3443d8e18a1fd43bfafd2b0133bbe","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"bb45cd435da536500f1d9692a9b49d0c570b763ccbf00473248b777f5c1f353b","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2bc7425ef40526650d6db7e072c1ff4a51101c3ac2cc4b666623b19496a6e27","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"0dba70b3fb0dcd713fda33c2df64fa6751fff6460e536971cee917260fb17882","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","impliedFormat":1},{"version":"4f6ae308c5f2901f2988c817e1511520619e9025b9b12cc7cce2ab2e6ffed78a","impliedFormat":1},{"version":"8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"dbd0794f86b0f3e7c2c28bbe6cbf91adc6ef2203c6a832548ef199816d47039c","affectsGlobalScope":true,"impliedFormat":1},{"version":"25be1eb939c9c63242c7a45446edb20c40541da967f43f1aa6a00ed53c0552db","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"4371055bb001f40596e2e236b27583e13bf11e75d937962f8947d56519237fb8","impliedFormat":1},{"version":"89189df027e8910200a4b65af1e29a996225cf25975f5c438fbe9361c008fc6b","impliedFormat":1},{"version":"576d74d281154c5799c8590920efd89efd875c57851f68d800c116f6f2156473","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"5ba4a4a1f9fae0550de86889fb06cd997c8406795d85647cbcd992245625680c","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","impliedFormat":1},{"version":"26b7d0cd4b41ab557ef9e3bfeec42dcf24252843633e3d29f38d2c0b13aaa528","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"08323a8971cb5b2632b532cba1636ad4ca0d76f9f7d0b8d1a0c706fdf5c77b45","impliedFormat":1},{"version":"06fc6fbc8eb2135401cf5adce87655790891ca22ad4f97dfccd73c8cf8d8e6b5","impliedFormat":99},{"version":"1cce0c01dd7e255961851cdb9aa3d5164ec5f0e7f0fefc61e28f29afedda374f","impliedFormat":99},{"version":"7778598dfac1b1f51b383105034e14a0e95bc7b2538e0c562d5d315e7d576b76","impliedFormat":99},{"version":"b14409570c33921eb797282bb7f9c614ccc6008bf3800ba184e950cdfc54ab5c","impliedFormat":99},{"version":"2f0357257a651cc1b14e77b57a63c7b9e4e10ec2bb57e5fdccf83be0efb35280","impliedFormat":99},{"version":"866e63a72a9e85ed1ec74eaebf977be1483f44aa941bcae2ba9b9e3b39ca4395","impliedFormat":99},{"version":"6865d0d503a5ad6775339f6b5dcfa021d72d2567027943b52679222411ad2501","impliedFormat":99},{"version":"dc2be4768bcf96e5d5540ed06fdfbddb2ee210227556ea7b8114ad09d06d35a5","impliedFormat":99},{"version":"e86813f0b7a1ada681045a56323df84077c577ef6351461d4fff4c4afdf79302","impliedFormat":99},{"version":"b3ace759b8242cc742efb6e54460ed9b8ceb9e56ce6a9f9d5f7debe73ed4e416","impliedFormat":99},{"version":"1c4d715c5b7545acecd99744477faa8265ca3772b82c3fa5d77bfc8a27549c7e","impliedFormat":99},{"version":"8f92dbdd3bbc8620e798d221cb7c954f8e24e2eed31749dfdb5654379b031c26","impliedFormat":99},{"version":"f30bfef33d69e4d0837e9e0bbf5ea14ca148d73086dc95a207337894fde45c6b","impliedFormat":99},{"version":"82230238479c48046653e40a6916e3c820b947cb9e28b58384bc4e4cea6a9e92","impliedFormat":99},{"version":"3a6941ff3ea7b78017f9a593d0fd416feb45defa577825751c01004620b507d3","impliedFormat":99},{"version":"481c38439b932ef9e87e68139f6d03b0712bc6fc2880e909886374452a4169b5","impliedFormat":99},{"version":"64054d6374f7b8734304272e837aa0edcf4cfa2949fa5810971f747a0f0d9e9e","impliedFormat":99},{"version":"267498893325497596ff0d99bfdb5030ab4217c43801221d2f2b5eb5734e8244","impliedFormat":99},{"version":"d2ec89fb0934a47f277d5c836b47c1f692767511e3f2c38d00213c8ec4723437","impliedFormat":99},{"version":"475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","impliedFormat":99},{"version":"c1022a2b86fadc3f994589c09331bdb3461966fb87ebb3e28c778159a300044e","impliedFormat":99},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"95da3c365e3d45709ad6e0b4daa5cdaf05e9076ba3c201e8f8081dd282c02f57","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1},{"version":"169cc96316cacf8b489aaab4ac6bcef7b33e8779a8902bce57c737b4aa372d16","impliedFormat":1},{"version":"4095f4086e7db146d9e08ad0b24c795ba6e4bddbd4aa87c5c06855efbda974aa","impliedFormat":1},{"version":"d57be402cf1a3f1bd1852fc71b31ff54da497f64dcdcf8af9ad32435e3f32c1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","impliedFormat":1},{"version":"17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","impliedFormat":1},{"version":"6e5c9272f6b3783be7bdddaf207cccdb8e033be3d14c5beacc03ae9d27d50929","impliedFormat":1},{"version":"21ac4cf3f8d8c6e1201cb31f600be708c9a37867fc5c73b7ccf80560fae591c8","impliedFormat":1},{"version":"0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","impliedFormat":1},{"version":"798367363a3274220cbed839b883fe2f52ba7197b25e8cb2ac59c1e1fd8af6b7","impliedFormat":1},{"version":"3fa6aece30a44b769633651b07e0a0859e8194dfbbcfe0d7cda561bc521a5d7c","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"58b63c0f3bfac04d639c31a9fe094089c0bdcc8cda7bc35f1f23828677aa7926","impliedFormat":1},{"version":"d51d662a37aa1f1b97ed4caf4f1c25832047b9bfffcc707b53aedd07cd245303","impliedFormat":1},{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[[104,107]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"jsx":4,"module":99,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[75,1],[111,2],[109,1],[256,3],[108,1],[114,4],[110,2],[112,5],[113,2],[221,6],[225,7],[228,8],[238,9],[220,10],[239,10],[240,1],[241,1],[242,1],[243,11],[244,1],[246,12],[247,13],[245,1],[248,1],[226,1],[250,14],[251,15],[259,16],[255,17],[254,18],[252,1],[232,19],[237,20],[262,21],[223,1],[233,1],[263,22],[474,23],[454,24],[456,25],[455,24],[458,26],[460,27],[461,28],[462,29],[463,27],[464,28],[465,27],[466,30],[467,28],[468,27],[469,31],[470,24],[471,24],[472,32],[459,33],[473,34],[457,34],[475,1],[476,35],[477,36],[253,1],[478,1],[260,37],[261,1],[480,38],[481,39],[482,1],[234,1],[483,10],[479,1],[484,40],[166,41],[167,41],[168,42],[120,43],[169,44],[170,45],[171,46],[115,1],[118,47],[116,1],[117,1],[172,48],[173,49],[174,50],[175,51],[176,52],[177,53],[178,53],[179,54],[180,55],[181,56],[182,57],[121,1],[119,1],[183,58],[184,59],[185,60],[219,61],[186,62],[187,1],[188,63],[189,64],[190,65],[191,66],[192,67],[193,68],[194,69],[195,70],[196,71],[197,71],[198,72],[199,1],[200,73],[201,74],[203,75],[202,76],[204,77],[205,78],[206,79],[207,80],[208,81],[209,82],[210,83],[211,84],[212,85],[213,86],[214,87],[215,88],[216,89],[122,1],[123,1],[124,1],[163,90],[164,1],[165,1],[217,91],[218,92],[485,1],[492,93],[491,94],[493,1],[230,1],[231,1],[66,95],[88,95],[62,1],[64,96],[65,95],[494,1],[224,97],[519,98],[520,99],[495,100],[498,100],[517,98],[518,98],[508,98],[507,101],[505,98],[500,98],[513,98],[511,98],[515,98],[499,98],[512,98],[516,98],[501,98],[502,98],[514,98],[496,98],[503,98],[504,98],[506,98],[510,98],[521,102],[509,98],[497,98],[534,103],[533,1],[528,102],[530,104],[529,102],[522,102],[523,102],[525,102],[527,102],[531,104],[532,104],[524,104],[526,104],[229,105],[236,106],[235,107],[249,108],[535,1],[537,109],[536,110],[453,111],[538,1],[539,112],[540,1],[541,113],[227,1],[125,1],[63,1],[258,114],[257,115],[84,116],[85,117],[222,62],[86,95],[83,118],[82,1],[490,119],[487,120],[489,121],[488,1],[486,1],[74,122],[68,123],[69,124],[71,123],[73,125],[70,126],[67,95],[72,1],[452,127],[425,1],[403,128],[401,128],[451,129],[416,130],[415,130],[316,131],[267,132],[423,131],[424,131],[426,133],[427,131],[428,134],[327,135],[429,131],[400,131],[430,131],[431,136],[432,131],[433,130],[434,137],[435,131],[436,131],[437,131],[438,131],[439,130],[440,131],[441,131],[442,131],[443,131],[444,138],[445,131],[446,131],[447,131],[448,131],[449,131],[266,129],[269,134],[270,134],[271,134],[272,134],[273,134],[274,134],[275,134],[276,131],[278,139],[279,134],[277,134],[280,134],[281,134],[282,134],[283,134],[284,134],[285,134],[286,131],[287,134],[288,134],[289,134],[290,134],[291,134],[292,131],[293,134],[294,134],[295,134],[296,134],[297,134],[298,134],[299,131],[301,140],[300,134],[302,134],[303,134],[304,134],[305,134],[306,138],[307,131],[308,131],[322,141],[310,142],[311,134],[312,134],[313,131],[314,134],[315,134],[317,143],[318,134],[319,134],[320,134],[321,134],[323,134],[324,134],[325,134],[326,134],[328,144],[329,134],[330,134],[331,134],[332,131],[333,134],[334,145],[335,145],[336,145],[337,131],[338,134],[339,134],[340,134],[345,134],[341,134],[342,131],[343,134],[344,131],[346,134],[347,134],[348,134],[349,134],[350,134],[351,134],[352,131],[353,134],[354,134],[355,134],[356,134],[357,134],[358,134],[359,134],[360,134],[361,134],[362,134],[363,134],[364,134],[365,134],[366,134],[367,134],[368,134],[369,146],[370,134],[371,134],[372,134],[373,134],[374,134],[375,134],[376,131],[377,131],[378,131],[379,131],[380,131],[381,134],[382,134],[383,134],[384,134],[402,147],[450,131],[387,148],[386,149],[410,150],[409,151],[405,152],[404,151],[406,153],[395,154],[393,155],[408,156],[407,153],[394,1],[396,157],[309,158],[265,159],[264,134],[399,1],[391,160],[392,161],[389,1],[390,162],[388,134],[397,163],[268,164],[417,1],[418,1],[411,1],[414,130],[413,1],[419,1],[420,1],[412,165],[421,1],[422,1],[385,166],[398,167],[61,168],[60,1],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[141,169],[151,170],[140,169],[161,171],[132,172],[131,173],[160,120],[154,174],[159,175],[134,176],[148,177],[133,178],[157,179],[129,180],[128,120],[158,181],[130,182],[135,183],[136,1],[139,183],[126,1],[162,184],[152,185],[143,186],[144,187],[146,188],[142,189],[145,190],[155,120],[137,191],[138,192],[147,193],[127,194],[150,185],[149,183],[153,1],[156,195],[80,196],[78,196],[81,197],[76,198],[77,196],[79,199],[90,200],[87,200],[102,201],[94,202],[100,202],[97,196],[103,203],[101,200],[89,204],[93,205],[96,202],[91,206],[99,202],[98,200],[95,200],[92,202],[105,207],[106,208],[107,208],[104,209]],"latestChangedDtsFile":"./dist/mount.d.ts","version":"5.8.3"} \ No newline at end of file +{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/react-router/dist/development/router-5iOvts3c.d.mts","../../../node_modules/react-router/dist/development/browser-BEPxnEBW.d.mts","../../../node_modules/react-router/dist/development/dom-export.d.mts","../../../node_modules/react-router/dist/development/register-CS_tiXsm.d.mts","../../../node_modules/react-router/dist/development/index-react-server-client-MKTlCGL3.d.mts","../../../node_modules/react-router/node_modules/cookie/dist/index.d.ts","../../../node_modules/react-router/dist/development/index.d.mts","../../../node_modules/react-router-dom/dist/index.d.mts","../../../packages/types/src/user.ts","../../../node_modules/mitt/index.d.ts","../../../packages/types/src/manifest.ts","../../../packages/types/src/plugin.ts","../../../packages/types/src/errors.ts","../../../packages/types/src/api-response.ts","../../../packages/types/src/transformers.ts","../../../packages/types/src/debug.ts","../../../packages/types/src/http-headers.ts","../../../packages/types/src/index.ts","../../../packages/plugin-sdk/dist/src/types/services.d.ts","../../../packages/plugin-sdk/dist/src/types/manifest.d.ts","../../../packages/plugin-sdk/dist/src/types/context.d.ts","../../../packages/plugin-sdk/dist/src/types/integrations.d.ts","../../../packages/plugin-sdk/dist/src/types/index.d.ts","../../../packages/plugin-sdk/dist/src/utils/validation.d.ts","../../../packages/plugin-sdk/dist/src/config/ports.d.ts","../../../packages/plugin-sdk/dist/src/utils/api.d.ts","../../../packages/plugin-sdk/dist/src/utils/migration.d.ts","../../../packages/plugin-sdk/dist/src/utils/mount.d.ts","../../../packages/plugin-sdk/dist/src/utils/headers.d.ts","../../../packages/plugin-sdk/dist/src/utils/backend-url.d.ts","../../../packages/plugin-sdk/dist/src/utils/theme.d.ts","../../../packages/plugin-sdk/dist/src/utils/index.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useShell.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useApiClient.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePluginApi.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePluginEvent.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useUser.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useError.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePluginConfig.unified.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePluginConfig.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useIntegration.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePluginAdmin.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useTenant.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useTeam.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useOverlay.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useKeyboardShortcut.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useQuery.d.ts","../../../packages/plugin-sdk/dist/src/hooks/usePipeline.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useWebRTC.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useLivepeer.d.ts","../../../packages/plugin-sdk/dist/src/hooks/useWebSocket.d.ts","../../../packages/plugin-sdk/dist/src/hooks/index.d.ts","../../../packages/plugin-sdk/dist/src/components/LivepeerPublisher.d.ts","../../../packages/plugin-sdk/dist/src/components/LivepeerPlayer.d.ts","../../../packages/plugin-sdk/dist/src/components/index.d.ts","../../../packages/plugin-sdk/dist/src/contracts/dashboard.d.ts","../../../node_modules/graphql/version.d.ts","../../../node_modules/graphql/jsutils/Maybe.d.ts","../../../node_modules/graphql/language/source.d.ts","../../../node_modules/graphql/jsutils/ObjMap.d.ts","../../../node_modules/graphql/jsutils/Path.d.ts","../../../node_modules/graphql/jsutils/PromiseOrValue.d.ts","../../../node_modules/graphql/language/kinds.d.ts","../../../node_modules/graphql/language/tokenKind.d.ts","../../../node_modules/graphql/language/ast.d.ts","../../../node_modules/graphql/language/location.d.ts","../../../node_modules/graphql/error/GraphQLError.d.ts","../../../node_modules/graphql/language/directiveLocation.d.ts","../../../node_modules/graphql/type/directives.d.ts","../../../node_modules/graphql/type/schema.d.ts","../../../node_modules/graphql/type/definition.d.ts","../../../node_modules/graphql/execution/execute.d.ts","../../../node_modules/graphql/graphql.d.ts","../../../node_modules/graphql/type/scalars.d.ts","../../../node_modules/graphql/type/introspection.d.ts","../../../node_modules/graphql/type/validate.d.ts","../../../node_modules/graphql/type/assertName.d.ts","../../../node_modules/graphql/type/index.d.ts","../../../node_modules/graphql/language/printLocation.d.ts","../../../node_modules/graphql/language/lexer.d.ts","../../../node_modules/graphql/language/parser.d.ts","../../../node_modules/graphql/language/printer.d.ts","../../../node_modules/graphql/language/visitor.d.ts","../../../node_modules/graphql/language/predicates.d.ts","../../../node_modules/graphql/language/index.d.ts","../../../node_modules/graphql/execution/subscribe.d.ts","../../../node_modules/graphql/execution/values.d.ts","../../../node_modules/graphql/execution/index.d.ts","../../../node_modules/graphql/subscription/index.d.ts","../../../node_modules/graphql/utilities/TypeInfo.d.ts","../../../node_modules/graphql/validation/ValidationContext.d.ts","../../../node_modules/graphql/validation/validate.d.ts","../../../node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.d.ts","../../../node_modules/graphql/validation/specifiedRules.d.ts","../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.d.ts","../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.d.ts","../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.d.ts","../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.d.ts","../../../node_modules/graphql/validation/rules/KnownDirectivesRule.d.ts","../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.d.ts","../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.d.ts","../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.d.ts","../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.d.ts","../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.d.ts","../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.d.ts","../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.d.ts","../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts","../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.d.ts","../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.d.ts","../../../node_modules/graphql/validation/rules/ScalarLeafsRule.d.ts","../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.d.ts","../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.d.ts","../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.d.ts","../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.d.ts","../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts","../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.d.ts","../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.d.ts","../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts","../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts","../../../node_modules/graphql/validation/index.d.ts","../../../node_modules/graphql/error/syntaxError.d.ts","../../../node_modules/graphql/error/locatedError.d.ts","../../../node_modules/graphql/error/index.d.ts","../../../node_modules/graphql/utilities/getIntrospectionQuery.d.ts","../../../node_modules/graphql/utilities/getOperationAST.d.ts","../../../node_modules/graphql/utilities/getOperationRootType.d.ts","../../../node_modules/graphql/utilities/introspectionFromSchema.d.ts","../../../node_modules/graphql/utilities/buildClientSchema.d.ts","../../../node_modules/graphql/utilities/buildASTSchema.d.ts","../../../node_modules/graphql/utilities/extendSchema.d.ts","../../../node_modules/graphql/utilities/lexicographicSortSchema.d.ts","../../../node_modules/graphql/utilities/printSchema.d.ts","../../../node_modules/graphql/utilities/typeFromAST.d.ts","../../../node_modules/graphql/utilities/valueFromAST.d.ts","../../../node_modules/graphql/utilities/valueFromASTUntyped.d.ts","../../../node_modules/graphql/utilities/astFromValue.d.ts","../../../node_modules/graphql/utilities/coerceInputValue.d.ts","../../../node_modules/graphql/utilities/concatAST.d.ts","../../../node_modules/graphql/utilities/separateOperations.d.ts","../../../node_modules/graphql/utilities/stripIgnoredCharacters.d.ts","../../../node_modules/graphql/utilities/typeComparators.d.ts","../../../node_modules/graphql/utilities/assertValidName.d.ts","../../../node_modules/graphql/utilities/findBreakingChanges.d.ts","../../../node_modules/graphql/utilities/typedQueryDocumentNode.d.ts","../../../node_modules/graphql/utilities/resolveSchemaCoordinate.d.ts","../../../node_modules/graphql/utilities/index.d.ts","../../../node_modules/graphql/index.d.ts","../../../packages/plugin-sdk/dist/src/contracts/createDashboardProvider.d.ts","../../../packages/plugin-sdk/dist/src/contracts/index.d.ts","../../../packages/plugin-sdk/dist/src/index.d.ts","../../../node_modules/motion-utils/dist/index.d.ts","../../../node_modules/motion-dom/dist/index.d.ts","../../../node_modules/framer-motion/dist/types.d-CQ4vRM6h.d.ts","../../../node_modules/framer-motion/dist/types/index.d.ts","../../../node_modules/lucide-react/dist/lucide-react.d.ts","../../../packages/ui/src/Card.tsx","../../../node_modules/@types/react-dom/index.d.ts","../../../packages/ui/src/Modal.tsx","../../../packages/ui/src/Badge.tsx","../../../packages/ui/src/Stat.tsx","../../../packages/ui/src/VersionBadge.tsx","../../../packages/ui/src/ReleaseNotesViewer.tsx","../../../packages/ui/src/DataTable.tsx","../../../packages/ui/src/Tooltip.tsx","../../../packages/ui/src/SearchInput.tsx","../../../packages/ui/src/FilterBar.tsx","../../../packages/ui/src/Toggle.tsx","../../../packages/ui/src/Tabs.tsx","../../../packages/ui/src/EmptyState.tsx","../../../packages/ui/src/LoadingState.tsx","../../../packages/ui/src/ConfirmDialog.tsx","../../../packages/ui/src/index.ts","./src/pages/DeveloperView.tsx","./src/App.tsx","../../../node_modules/@types/react-dom/client.d.ts","./src/main.tsx","./src/mount.tsx","../../../node_modules/@types/aria-query/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/deep-eql/index.d.ts","../../../node_modules/assertion-error/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/compression/index.d.ts","../../../node_modules/@types/cookiejar/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/@types/d3-array/index.d.ts","../../../node_modules/@types/d3-color/index.d.ts","../../../node_modules/@types/d3-ease/index.d.ts","../../../node_modules/@types/d3-interpolate/index.d.ts","../../../node_modules/@types/d3-path/index.d.ts","../../../node_modules/@types/d3-time/index.d.ts","../../../node_modules/@types/d3-scale/index.d.ts","../../../node_modules/@types/d3-shape/index.d.ts","../../../node_modules/@types/d3-timer/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/ssh2/index.d.ts","../../../node_modules/@types/docker-modem/index.d.ts","../../../node_modules/@types/dockerode/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../../../node_modules/eslint/lib/types/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/esquery/index.d.ts","../../../node_modules/@types/estree-jsx/index.d.ts","../../../node_modules/@types/jsonfile/index.d.ts","../../../node_modules/@types/jsonfile/utils.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/http-proxy/index.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/inquirer/lib/objects/choice.d.ts","../../../node_modules/@types/inquirer/lib/objects/separator.d.ts","../../../node_modules/@types/inquirer/lib/objects/choices.d.ts","../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../../../node_modules/@types/inquirer/lib/prompts/base.d.ts","../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../../../node_modules/@types/inquirer/lib/prompts/input.d.ts","../../../node_modules/@types/inquirer/lib/prompts/list.d.ts","../../../node_modules/@types/inquirer/lib/prompts/number.d.ts","../../../node_modules/@types/inquirer/lib/prompts/password.d.ts","../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts","../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../../../node_modules/@types/inquirer/lib/utils/events.d.ts","../../../node_modules/@types/inquirer/lib/utils/readline.d.ts","../../../node_modules/@types/inquirer/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mdx/types.d.ts","../../../node_modules/@types/mdx/index.d.ts","../../../node_modules/@types/methods/index.d.ts","../../../node_modules/@types/mime-types/index.d.ts","../../../node_modules/@types/morgan/index.d.ts","../../../node_modules/@types/multer/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/pg-types/index.d.ts","../../../node_modules/pg-protocol/dist/messages.d.ts","../../../node_modules/pg-protocol/dist/serializer.d.ts","../../../node_modules/pg-protocol/dist/parser.d.ts","../../../node_modules/pg-protocol/dist/index.d.ts","../../../node_modules/@types/pg/lib/type-overrides.d.ts","../../../node_modules/@types/pg/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/superagent/lib/agent-base.d.ts","../../../node_modules/@types/superagent/lib/node/response.d.ts","../../../node_modules/@types/superagent/types.d.ts","../../../node_modules/@types/superagent/lib/node/agent.d.ts","../../../node_modules/@types/superagent/lib/request-base.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../../../node_modules/@types/superagent/lib/node/index.d.ts","../../../node_modules/@types/superagent/index.d.ts","../../../node_modules/@types/supertest/types.d.ts","../../../node_modules/@types/supertest/lib/agent.d.ts","../../../node_modules/@types/supertest/lib/test.d.ts","../../../node_modules/@types/supertest/index.d.ts","../../../node_modules/@types/tar/node_modules/minipass/index.d.ts","../../../node_modules/@types/tar/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileIdsList":[[255,266,313],[266,313],[266,313,397],[255,256,257,258,259,266,313],[255,257,266,313],[266,313,327,361,362],[266,313,324,327,354,361,364,365,366],[266,313,368,369],[266,313,360,378],[266,313,327,361],[266,313,383],[266,313,387],[266,313,386],[266,313,391],[266,313,327,332,343,361,393],[266,313,324,343,361,393,394],[266,313,396,402,405],[266,313,396,397,398,405],[266,313,399],[266,313,396,405],[266,313,324,327,361,372,373,374],[266,313,363,373,375,377],[266,313,325,361,406,407],[266,313,409],[266,313,324,327,329,332,343,354,361],[266,313,339,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621],[266,313,622],[266,313,602,603,622],[266,313,339,600,605,622],[266,313,339,606,607,622],[266,313,339,606,622],[266,313,339,600,606,622],[266,313,339,612,622],[266,313,339,622],[266,313,339,600],[266,313,605],[266,313,339],[266,313,623],[266,313,624],[266,313,325,354,361],[266,313,324,361],[266,313,629,630],[266,313,343,378],[266,310,313],[266,312,313],[313],[266,313,318,346],[266,313,314,319,324,332,343,354],[266,313,314,315,324,332],[261,262,263,266,313],[266,313,316,355],[266,313,317,318,325,333],[266,313,318,343,351],[266,313,319,321,324,332],[266,312,313,320],[266,313,321,322],[266,313,323,324],[266,312,313,324],[266,313,324,325,326,343,354],[266,313,324,325,326,339,343,346],[266,313,321,324,327,332,343,354],[266,313,324,325,327,328,332,343,351,354],[266,313,327,329,343,351,354],[264,265,266,267,268,269,270,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360],[266,313,324,330],[266,313,331,354,359],[266,313,321,324,332,343],[266,313,333],[266,313,334],[266,312,313,335],[266,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360],[266,313,337],[266,313,338],[266,313,324,339,340],[266,313,339,341,355,357],[266,313,324,343,344,346],[266,313,345,346],[266,313,343,344],[266,313,346],[266,313,347],[266,310,313,343,348],[266,313,324,349,350],[266,313,349,350],[266,313,318,332,343,351],[266,313,352],[266,313,332,353],[266,313,327,338,354],[266,313,318,355],[266,313,343,356],[266,313,331,357],[266,313,358],[266,308,313],[266,308,313,324,326,335,343,346,354,357,359],[266,313,343,360],[266,313,324,343,351,361,636,637,640,641,642],[266,313,642],[64,266,313],[62,63,266,313],[266,313,327,343,361],[266,313,645,684],[266,313,645,669,684],[266,313,684],[266,313,645],[266,313,645,670,684],[266,313,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683],[266,313,670,684],[266,313,325,343,361,371],[266,313,327,361,372,376],[266,313,324,327,329,332,343,361],[266,313,693],[266,313,380,631,686,688,694],[266,313,328,332,343,351,361],[266,313,325,327,328,329,332,343,631,687,688,689,690,691,692],[266,313,327,343,693],[266,313,325,687,688],[266,313,354,687],[266,313,694,695,696,697],[266,313,694,695,698],[266,313,694,695],[266,313,327,328,332,631,694],[266,313,325,343,360,361,699],[266,313,324,343,361],[266,313,343,361],[266,313,701],[266,313,324,327,329,332,343,351,354,360,361],[266,313,705],[266,313,396,400,401,405],[266,313,402],[64,228,266,313],[64,65,227,228,229,266,313],[123,124,130,131,266,313],[132,197,198,266,313],[123,130,132,266,313],[124,132,266,313],[123,125,126,127,130,132,135,136,266,313],[126,137,151,152,266,313],[123,130,135,136,137,266,313],[123,125,130,132,134,135,136,266,313],[123,124,135,136,137,266,313],[122,138,143,150,153,154,196,199,222,266,313],[123,266,313],[124,128,129,266,313],[124,128,129,130,131,133,144,145,146,147,148,149,266,313],[124,129,130,266,313],[124,266,313],[123,124,129,130,132,145,266,313],[130,266,313],[124,130,131,266,313],[128,130,266,313],[137,151,266,313],[123,125,126,127,130,135,266,313],[123,130,133,136,266,313],[126,134,135,136,139,140,141,142,266,313],[136,266,313],[123,125,130,132,134,136,266,313],[132,135,266,313],[123,130,134,135,136,148,266,313],[132,266,313],[123,130,136,266,313],[124,130,135,146,266,313],[135,200,266,313],[132,136,266,313],[130,135,266,313],[135,266,313],[123,133,266,313],[123,130,266,313],[130,135,136,266,313],[155,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,266,313],[135,136,266,313],[124,130,134,135,136,266,313],[125,130,266,313],[123,125,130,136,266,313],[123,125,130,266,313],[123,130,132,134,135,136,148,155,266,313],[156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,266,313],[148,156,266,313],[156,158,266,313],[123,130,132,135,155,156,266,313],[266,313,324],[227,266,313],[266,313,361,637,638,639],[266,313,361],[266,313,343,361,637],[68,72,266,313],[64,66,266,313],[64,66,67,266,313],[64,66,67,69,70,71,266,313],[66,266,313],[266,313,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,428,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,468,469,470,471,472,473,474,475,476,477,478,479,481,482,483,484,485,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,531,532,533,535,544,546,547,548,549,550,551,553,554,556,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599],[266,313,457],[266,313,415,416],[266,313,412,413,414,416],[266,313,413,416],[266,313,416,457],[266,313,412,416,534],[266,313,414,415,416],[266,313,412,416],[266,313,416],[266,313,415],[266,313,412,415,457],[266,313,413,415,416,573],[266,313,415,416,573],[266,313,415,581],[266,313,413,415,416],[266,313,425],[266,313,448],[266,313,469],[266,313,415,416,457],[266,313,416,464],[266,313,415,416,457,475],[266,313,415,416,475],[266,313,416,516],[266,313,412,416,535],[266,313,541,543],[266,313,412,416,534,541,542],[266,313,534,535,543],[266,313,541],[266,313,412,416,541,542,543],[266,313,557],[266,313,552],[266,313,555],[266,313,413,415,535,536,537,538],[266,313,457,535,536,537,538],[266,313,535,537],[266,313,415,536,537,539,540,544],[266,313,412,415],[266,313,416,559],[266,313,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,458,459,460,461,462,463,465,466,467,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532],[266,313,545],[60,266,313],[266,280,284,313,354],[266,280,313,343,354],[266,275,313],[266,277,280,313,351,354],[266,313,332,351],[266,275,313,361],[266,277,280,313,332,354],[266,272,273,276,279,313,324,343,354],[266,280,287,313],[266,272,278,313],[266,280,301,302,313],[266,276,280,313,346,354,361],[266,301,313,361],[266,274,275,313,361],[266,280,313],[266,274,275,276,277,278,279,280,281,282,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307,313],[266,280,295,313],[266,280,287,288,313],[266,278,280,288,289,313],[266,279,313],[266,272,275,280,313],[266,280,284,288,289,313],[266,284,313],[266,278,280,283,313,354],[266,272,277,280,287,313],[266,313,343],[266,275,280,301,313,359,361],[118,119,266,313],[84,121,223,266,313],[121,224,266,313],[98,99,100,101,102,103,105,106,107,108,109,110,111,112,113,114,115,116,266,313],[91,266,313],[87,266,313],[112,266,313],[104,266,313],[84,266,313],[64,84,86,266,313],[84,85,86,87,88,89,90,91,92,93,97,100,101,117,120,225,266,313],[83,84,266,313],[84,85,86,87,266,313],[83,266,313],[90,266,313],[94,266,313],[89,91,92,93,95,96,266,313],[64,86,266,313],[85,266,313],[61,65,266,313],[61,65,74,76,77,78,79,80,81,82,266,313],[61,65,75,83,266,313],[61,65,77,266,313],[61,64,65,266,313],[61,64,65,231,234,266,313],[61,64,65,231,266,313],[61,64,65,231,233,266,313],[61,64,65,230,231,235,266,313],[61,64,65,232,266,313],[61,65,232,234,235,236,237,238,239,240,241,242,243,244,245,246,247,266,313],[61,64,65,73,226,249,266,313],[61,64,65,73,249,251,266,313],[61,65,250,266,313],[61,64,65,226,230,231,248,266,313]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"f123246a7b6c04d80b9b57fadfc6c90959ec6d5c0d4c8e620e06e2811ae3a052","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"bb1defa1a08700b1e4bca6d31d71ab137470871700b4b72dfd1506c6a9af03ca","impliedFormat":99},{"version":"04facf0c6ec863ff0ff5780c908313666389fb7d90673681e7571bd3890eab47","impliedFormat":99},{"version":"d95afe4f740ab14975ebbb03a9961d2c6165b898263faa10e4160e1026378248","affectsGlobalScope":true,"impliedFormat":99},{"version":"38ee113ab61ab569ef0f19156c5bc151bcacbee452f8bb55d77a1ad70db2f1e7","impliedFormat":99},{"version":"57a431c07c4943800b0163adcf73a9e12523700c6694cbc97e99973bdcdc3b7a","impliedFormat":99},{"version":"79c164aa4f8a8418df7717206ea52508f72743224a6b9c705f10724c6dbb5548","impliedFormat":1},{"version":"8d88e177e7eed625a46b41abf05ab5a83e6486e599bf8013652d2e0874d8c133","impliedFormat":99},{"version":"9f49b8064f63b7b3275a8247692967da2458734ea9afcf5ffd86b5c177674740","impliedFormat":99},{"version":"69a659416f791e4481580427dd80560fe4835b3114cde609d460a7a9a59309da","signature":"f6dce5a17ebc8f69d4406f889e92e5f1397c8552a53490bc636aeca594cf30bb"},{"version":"980d84ab65a61d1979a22e5cd3322672e75fb148392b6903d08ccef59bbf530c","impliedFormat":1},{"version":"8e3e82df6ed7b3fe94d7fc2b8e5d71ebc6724e400698c18862c4443480a3dee6","signature":"7b7296d2c42986aa9ea8f14c7283de9fc92b56236bda0b09d9929fd6c893f629"},{"version":"89cbe3ad3337924a517c7f5054b1d49c3f810210ada593e1bf1de18b46c9c4a6","signature":"b72731b395ae1f15c50afaf4565ac5645a4f7c9a3f241b91fc74cbf906e69735"},{"version":"0c91e42627debfe26a9723497458b8a07ee8a66572a3e891923a62f8a4c70076","signature":"e06c74c7302950986c3fca32ed812df811e23e28e481a3a360e0f627a23a14c6"},{"version":"1d8b6dfc2ceca48a0632ddc119ded3d575ad8eb1e07a1a152fbe5fffd624e175","signature":"1af16cef482c35c5f2722fef51e8b7cad53f4dd27461e55d242910f2abf7796a"},{"version":"1d844af6b98c4e2d2e33124aa7d61c6c1a83938f15a0f32159c79e783361e7c6","signature":"329f8ecccb3b3a6bc8264dc92b104a07cf4ed76f620292cf8a8bbce08ab56850"},{"version":"ff715b17dc0b68a36f4b986fd80cb4d4c73cdf8c7092e9a53e28a2a012a63ccf","signature":"284ec87e150d9857eacb45728a1bad01debe351b3cdd2623dc1ec17a09583b47"},{"version":"e7d8bbdbfcfd8595dfd3ee10b0337812e887b81465756c86fc8619b5e4b1b32b","signature":"069370018243c3801dc6a1ad5fb9cddaa6d15569ae47224ab9cb348a624c50d2"},{"version":"3c97153fd203f5455e704dc45a744b218a6ff6bdcf5e9f23e9b7fb476fcb24ae","signature":"4e9fc2fc0e37d268249635ad863550c04828401b41d68644ef21a1d930bf967a"},"acbbb7b0de561889bfdea69c53274a6674d164b589ce8c710fdf3fdc82d3f3c3","59f147f87bdb69ac7404b56e9b8551e67b9fe87d4fe624659fa7c504e3ac6b9c","aad88b6447cf3ed021074d077355bb9258e9e7e1d412c633fb3ce275f6e146a7","ea9ce61558857a7d96e0ba8d637a2b1dd0595452a89fd5ad48623dc2f0625e54","6539401b02fe6e9f2089d1e29b2803dec047763174407ba03f6c66ee8561899b","c243ae3094280a9b96cf4f8089194c8888c02a47b01e3cf9e32d066c501c63a1","57d3f0e0782082e8b27e6b9f4dc86eccce1f398a5a345fd43c17c82639cd2332","49fb3712bcca57b3a77559ea398505dc472e03f7f268b2948802c38b7f013f33","f88513d2b2ba56523d0dad1b2e8a4288c77d845025ae2032debb578aee9ea448","9a39966c861c0a9992c3c103a28814f28364d232c86e4afb84a99cbed29ff394","d99ab2e8b83b7dad929b8b644054adc7665b0894737d3d05d1662d268fca3abf","2ccc964c15718ce076730b1154843292e2079bf81a39cbd5ce1d96e9794824bd","70187a8d3ea106eca1e7c1194119981e573f97db18bfed4b5bc4a745e13fbf00","f97793c0264d4db798093c4ef7fb9b8a5b75561d6e062dd5eec7584f2bf4401c","2d842edc5b8c217843a6f0f591a03c84e59ae0548a05ac9ebfa7630d96cf2df5","de94978c752c99f1c1cf95eac1a51e00f2653c1412f645c4a8505ec8265805a6","660040217b221068b79e549c68529ece6717b63b9f5d0efd1afccceeb9475ac8","8f177a52be07fb45108138fedb585b19bb250d713bd3e34c469f5a8e27f2d1ee","8bf756e3f04470a13685962780dc715f01124c1efcd684d831a33efb26f2c32c","b7af73339415b6d5c21e7bba85a5f1edca0885d1c1277a2f2a78689d7ae3cd10","da9c87989b29120dcf6f5757d118f441c9d510c195ebe85529a0d21182cdd72f","c622d4db9be7a887700c3c0b4e04e4aa53984d7e16daf538d563c4893c44754c","7068ebc8821f045e9f6c1ebdba1c9d99da8bc51372a9d6af19e92020cd27fb50","c74cdcfbc15997593f9b8ebbfb6187e73bd88c13eb539a68e0b69a001aa7c5b6","4bb90007da9e904174c03def53af2a48f29013c5a5396bbcfe545cc7510064f1","b13f55161cd976dfb6fb67546c8cbdbf770e3c3cb00e859d0eebbf107752f0c6","9ee762498634fa03651bc64566ef05137e3f1c4b28ece4e50b0cb94c4b8940ae","4307c74a4ab5c74db19df90dce6240dc438aadd636f4da801762b66d691d234b","807fd0336709622616755559a948f877ee5b667a090864973d07ddd78c42a366","2678bd19b96561af6c2be3badd75c96dc5cf595cbffb84b24531273ee01d5d03","1f65f1cb9651ba2cc152465197aa1c0c35953d6948f48292e32ecb2fe8afa866","cbb8e62dcccb1bc2bd4dee1d29f178c0e21ca1fa3422afaf88b01fa4a9cf8e07","9600e361ee16a1202af5d2e87c5cc728d66a76fcb6d49606723c5d5654664ac7","3cb2ed5d8452842596026ad6bf8e2bcf83fd75f2e80726b4841bc0e87c1cb8af","71a411a992ad4adccb6f06efda93fc147ba2ec97ba3fff9a4d7b5fe4c0d52c0b","4982885161794f8bc5c69799fb209c3f38dd4e70e7ad0e9fdfa04d1441727179","77bf3887917eb16bb95becd607154b019deee550515647456ea212d18ccc6e14","999e0ecdf4088f3958db24e9c9c882a381a3c28642d8b56cade31cb84f3328f3",{"version":"78647004e18e4c16b8a2e8345fca9267573d1c5a29e11ddfee71858fd077ef6e","impliedFormat":1},{"version":"0804044cd0488cb7212ddbc1d0f8e1a5bd32970335dbfc613052304a1b0318f9","impliedFormat":1},{"version":"b725acb041d2a18fde8f46c48a1408418489c4aa222f559b1ef47bf267cb4be0","impliedFormat":1},{"version":"85084ae98c1d319e38ef99b1216d3372a9afd7a368022c01c3351b339d52cb58","impliedFormat":1},{"version":"898ec2410fae172e0a9416448b0838bed286322a5c0c8959e8e39400cd4c5697","impliedFormat":1},{"version":"692345a43bac37c507fa7065c554258435ab821bbe4fb44b513a70063e932b45","impliedFormat":1},{"version":"7283aaea55499e5a9760db0ef199e3c12a35ff5391733fe1495b2d3add0c58ab","impliedFormat":1},{"version":"c1c8ccb14c76efb31ff84038ec7833a5715ba23e681b158b3c83cc012b8c3cfa","impliedFormat":1},{"version":"abb0a41fa0432cdec9595dbe84bd3efc5b59f04aa85dcd5cec7b453908fc85c3","impliedFormat":1},{"version":"522edc786ed48304671b935cf7d3ed63acc6636ab9888c6e130b97a6aea92b46","impliedFormat":1},{"version":"a9607a8f1ce7582dbeebc0816897925bf9b307cc05235e582b272a48364f8aa0","impliedFormat":1},{"version":"de21641eb8edcbc08dd0db4ee70eea907cd07fe72267340b5571c92647f10a77","impliedFormat":1},{"version":"48af3609dc95fa62c22c8ec047530daf1776504524d284d2c3f9c163725bdbd4","impliedFormat":1},{"version":"6758f7b72fa4d38f4f4b865516d3d031795c947a45cc24f2cfba43c91446d678","impliedFormat":1},{"version":"1fefab6dc739d33b7cb3fd08cd9d35dd279fcd7746965e200500b1a44d32db9e","impliedFormat":1},{"version":"cb719e699d1643112cc137652ed66341602a7d3cc5ec7062f10987ffe81744f6","impliedFormat":1},{"version":"bdf7abbd7df4f29b3e0728684c790e80590b69d92ed8d3bf8e66d4bd713941fe","impliedFormat":1},{"version":"8decb32fc5d44b403b46c3bb4741188df4fbc3c66d6c65669000c5c9cd506523","impliedFormat":1},{"version":"4beaf337ee755b8c6115ff8a17e22ceab986b588722a52c776b8834af64e0f38","impliedFormat":1},{"version":"c26dd198f2793bbdcc55103823a2767d6223a7fdb92486c18b86deaf63208354","impliedFormat":1},{"version":"93551b302a808f226f0846ad8012354f2d53d6dedc33b540d6ca69836781a574","impliedFormat":1},{"version":"040cb635dff5fc934413fa211d3a982122bf0e46acae9f7a369c61811f277047","impliedFormat":1},{"version":"778b684ebc6b006fcffeab77d25b34bf6e400100e0ec0c76056e165c6399ab05","impliedFormat":1},{"version":"285d50a08440314f7aea3246a5e15acbc38e2867ff07d21ef457ae8cb4e8a31f","impliedFormat":1},{"version":"672701f824ff6b9dab50514c6c4db711fb7ec5e7c2f0f6bc27b2dbe2e445a52a","impliedFormat":1},{"version":"be8f369f8d7e887eab87a3e4e41f1afcf61bf06056801383152aa83bda1f6a72","impliedFormat":1},{"version":"352bfb5f3a9d8a9c2464ad2dc0b2dc56a8212650a541fb550739c286dd341de1","impliedFormat":1},{"version":"ebef680e3597d7b3c8a9fc9e5581eb078461fa1406ded8d9859353dd6286eff2","impliedFormat":1},{"version":"dc923d45c03261241cefb03ea952883784e28fbc1d089af1a5a553a7b0f5e2b5","impliedFormat":1},{"version":"764150c107451d2fd5b6de305cff0a9dcecf799e08e6f14b5a6748724db46d8a","impliedFormat":1},{"version":"b04cf223c338c09285010f5308b980ee6d8bfa203824ed2537516f15e92e8c43","impliedFormat":1},{"version":"4b387f208d1e468193a45a51005b1ed5b666010fc22a15dc1baf4234078b636e","impliedFormat":1},{"version":"70441eda704feffd132be0c1541f2c7f6bbaafce25cb9b54b181e26af3068e79","impliedFormat":1},{"version":"d1addb12403afea87a1603121396261a45190886c486c88e1a5d456be17c2049","impliedFormat":1},{"version":"1e50bda67542964dbb2cfb21809f9976be97b2f79a4b6f8124463d42c95a704c","impliedFormat":1},{"version":"ea4b5d319625203a5a96897b057fddf6017d0f9a902c16060466fe69cc007243","impliedFormat":1},{"version":"a186fde3b1dde9642dda936e23a21cb73428340eb817e62f4442bb0fca6fa351","impliedFormat":1},{"version":"985ac70f005fb77a2bc0ed4f2c80d55919ded6a9b03d00d94aab75205b0778ec","impliedFormat":1},{"version":"ab01d8fcb89fae8eda22075153053fefac69f7d9571a389632099e7a53f1922d","impliedFormat":1},{"version":"bac0ec1f4c61abc7c54ccebb0f739acb0cdbc22b1b19c91854dc142019492961","impliedFormat":1},{"version":"566b0806f9016fa067b7fecf3951fcc295c30127e5141223393bde16ad04aa4a","impliedFormat":1},{"version":"8e801abfeda45b1b93e599750a0a8d25074d30d4cc01e3563e56c0ff70edeb68","impliedFormat":1},{"version":"902997f91b09620835afd88e292eb217fbd55d01706b82b9a014ff408f357559","impliedFormat":1},{"version":"a3727a926e697919fb59407938bd8573964b3bf543413b685996a47df5645863","impliedFormat":1},{"version":"83f36c0792d352f641a213ee547d21ea02084a148355aa26b6ef82c4f61c1280","impliedFormat":1},{"version":"dce7d69c17a438554c11bbf930dec2bee5b62184c0494d74da336daee088ab69","impliedFormat":1},{"version":"1e8f2cda9735002728017933c54ccea7ebee94b9c68a59a4aac1c9a58aa7da7d","impliedFormat":1},{"version":"e327a2b222cf9e5c93d7c1ed6468ece2e7b9d738e5da04897f1a99f49d42cca1","impliedFormat":1},{"version":"65165246b59654ec4e1501dd87927a0ef95d57359709e00e95d1154ad8443bc7","impliedFormat":1},{"version":"f1bacba19e2fa2eb26c499e36b5ab93d6764f2dba44be3816f12d2bc9ac9a35b","impliedFormat":1},{"version":"bce38da5fd851520d0cb4d1e6c3c04968cec2faa674ed321c118e97e59872edc","impliedFormat":1},{"version":"3398f46037f21fb6c33560ceca257259bd6d2ea03737179b61ea9e17cbe07455","impliedFormat":1},{"version":"6e14fc6c27cb2cb203fe1727bb3a923588f0be8c2604673ad9f879182548daca","impliedFormat":1},{"version":"12b9bcf8395d33837f301a8e6d545a24dfff80db9e32f8e8e6cf4b11671bb442","impliedFormat":1},{"version":"04295cc38689e32a4ea194c954ea6604e6afb6f1c102104f74737cb8cf744422","impliedFormat":1},{"version":"7418f434c136734b23f634e711cf44613ca4c74e63a5ae7429acaee46c7024c8","impliedFormat":1},{"version":"27d40290b7caba1c04468f2b53cf7112f247f8acdd7c20589cd7decf9f762ad0","impliedFormat":1},{"version":"2608b8b83639baf3f07316df29202eead703102f1a7e32f74a1b18cf1eee54b5","impliedFormat":1},{"version":"c93657567a39bd589effe89e863aaadbc339675fca6805ae4d97eafbcce0a05d","impliedFormat":1},{"version":"909d5db5b3b19f03dfb4a8f1d00cf41d2f679857c28775faf1f10794cbbe9db9","impliedFormat":1},{"version":"e4504bffce13574bab83ab900b843590d85a0fd38faab7eff83d84ec55de4aff","impliedFormat":1},{"version":"8ab707f3c833fc1e8a51106b8746c8bc0ce125083ea6200ad881625ae35ce11e","impliedFormat":1},{"version":"730ddc2386276ac66312edbcc60853fedbb1608a99cb0b1ff82ebf26911dba1f","impliedFormat":1},{"version":"c1b3fa201aa037110c43c05ea97800eb66fea3f2ecc5f07c6fd47f2b6b5b21d2","impliedFormat":1},{"version":"636b44188dc6eb326fd566085e6c1c6035b71f839d62c343c299a35888c6f0a9","impliedFormat":1},{"version":"3b2105bf9823b53c269cabb38011c5a71360c8daabc618fec03102c9514d230c","impliedFormat":1},{"version":"f96e63eb56e736304c3aef6c745b9fe93db235ddd1fec10b45319c479de1a432","impliedFormat":1},{"version":"acb4f3cee79f38ceba975e7ee3114eb5cd96ccc02742b0a4c7478b4619f87cd6","impliedFormat":1},{"version":"cfc85d17c1493b6217bad9052a8edc332d1fde81a919228edab33c14aa762939","impliedFormat":1},{"version":"eebda441c4486c26de7a8a7343ebbc361d2b0109abff34c2471e45e34a93020a","impliedFormat":1},{"version":"727b4b8eb62dd98fa4e3a0937172c1a0041eb715b9071c3de96dad597deddcab","impliedFormat":1},{"version":"708e2a347a1b9868ccdb48f3e43647c6eccec47b8591b220afcafc9e7eeb3784","impliedFormat":1},{"version":"6bb598e2d45a170f302f113a5b68e518c8d7661ae3b59baf076be9120afa4813","impliedFormat":1},{"version":"c28e058db8fed2c81d324546f53d2a7aaefff380cbe70f924276dbad89acd7d1","impliedFormat":1},{"version":"89d029475445d677c18cf9a8c75751325616d353925681385da49aeef9260ab7","impliedFormat":1},{"version":"826a98cb79deab45ccc4e5a8b90fa64510b2169781a7cbb83c4a0a8867f4cc58","impliedFormat":1},{"version":"618189f94a473b7fdc5cb5ba8b94d146a0d58834cd77cd24d56995f41643ccd5","impliedFormat":1},{"version":"1645dc6f3dd9a3af97eb5a6a4c794f5b1404cab015832eba67e3882a8198ec27","impliedFormat":1},{"version":"b5267af8d0a1e00092cceed845f69f5c44264cb770befc57d48dcf6a098cb731","impliedFormat":1},{"version":"91b0965538a5eaafa8c09cf9f62b46d6125aa1b3c0e0629dce871f5f41413f90","impliedFormat":1},{"version":"2978e33a00b4b5fb98337c5e473ab7337030b2f69d1480eccef0290814af0d51","impliedFormat":1},{"version":"ba71e9777cb5460e3278f0934fd6354041cb25853feca542312807ce1f18e611","impliedFormat":1},{"version":"608dbaf8c8bb64f4024013e73d7107c16dba4664999a8c6e58f3e71545e48f66","impliedFormat":1},{"version":"61937cefd7f4d6fa76013d33d5a3c5f9b0fc382e90da34790764a0d17d6277fb","impliedFormat":1},{"version":"af7db74826f455bfef6a55a188eb6659fd85fdc16f720a89a515c48724ee4c42","impliedFormat":1},{"version":"d6ce98a960f1b99a72de771fb0ba773cb202c656b8483f22d47d01d68f59ea86","impliedFormat":1},{"version":"2a47dc4a362214f31689870f809c7d62024afb4297a37b22cb86f679c4d04088","impliedFormat":1},{"version":"42d907ac511459d7c4828ee4f3f81cc331a08dc98d7b3cb98e3ff5797c095d2e","impliedFormat":1},{"version":"63d010bff70619e0cdf7900e954a7e188d3175461182f887b869c312a77ecfbd","impliedFormat":1},{"version":"1452816d619e636de512ca98546aafb9a48382d570af1473f0432a9178c4b1ff","impliedFormat":1},{"version":"9e3e3932fe16b9288ec8c948048aef4edf1295b09a5412630d63f4a42265370e","impliedFormat":1},{"version":"8bdba132259883bac06056f7bacd29a4dcf07e3f14ce89edb022fe9b78dcf9b3","impliedFormat":1},{"version":"5a5406107d9949d83e1225273bcee1f559bb5588942907d923165d83251a0e37","impliedFormat":1},{"version":"ca0ca4ca5ad4772161ee2a99741d616fea780d777549ba9f05f4a24493ab44e1","impliedFormat":1},{"version":"e7ee7be996db0d7cce41a85e4cae3a5fc86cf26501ad94e0a20f8b6c1c55b2d4","impliedFormat":1},{"version":"72263ae386d6a49392a03bde2f88660625da1eca5df8d95120d8ccf507483d20","impliedFormat":1},{"version":"b498375d015f01585269588b6221008aae6f0c0dc53ead8796ace64bdfcf62ea","impliedFormat":1},{"version":"c37aa3657fa4d1e7d22565ae609b1370c6b92bafb8c92b914403d45f0e610ddc","impliedFormat":1},{"version":"34534c0ead52cc753bdfdd486430ef67f615ace54a4c0e5a3652b4116af84d6d","impliedFormat":1},{"version":"a848339c272ab23e686b5d0b81297e3a7116ba7d27589c66ca1f4ebcd65e7f19","impliedFormat":1},{"version":"566315d39e476ca9e7fd0b1908074cb2a5ff9246cc3ed7da64cde5ad30f7e0b1","impliedFormat":1},{"version":"5f7ed82e82aa5017fe830ac40105321c32e3bf45d3cfcd557601f2ed58ff6ca4","impliedFormat":1},"406c1ef9d3f809c4e000b093ac11abb6a2d25186cec2474bcb09241122a1bcea","c46268798e287d4790f85aaea6e1229a183866b47465c504a97f227c3cbf1fa9","a6a61294859ca738d83b35170d0086908d7593cefdd59e10801974e93fcd41ed",{"version":"37c7961117708394f64361ade31a41f96cef7f2a6606300821c72438dd4abda3","impliedFormat":1},{"version":"658ae473fac24f0bff6dd79b75f3d8ef44954587e7506cb59d449c2b362ace1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"64d4c41b11c1c817ddd39c4febdba05b560e4bdc4aef196ca48799b732ec8241","impliedFormat":1},{"version":"e4fdefba646eb133e52e30b00b3086f8849be02becb89c98b3ed4e873e40c8fc","impliedFormat":1},{"version":"d7dfba64b7350cb9501c544fe8ceba1b2455b42029d22b1a4fd02e94a6783525","impliedFormat":1},"14197415f74395d8abe14faa28acf8e5d2090bfa1d86dce90e1433b8ed8d9c31",{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},"3b1b90d67ed9f8dbc5771c2ceb6e9f944706e8913b497b52cc6116441859f504","ccdf36fc1bc4ec9894d9d7d637d0d80de5260fdbb381601335aee5b3f135d543","8fa214dce4ca47c55d73e8a817fa8ea306d3f0d618174619d000cc85476aa8e3","d0a3f4cc133af3b104c7fb1d743e0470dd878395d857fff5017e785ce604b544","9946047e7de48ffbc0983a20ee0b632dfd50b06e29fd45998a5a701b910b9b3c","76f1906ea4b1fab5c47fc0ba6bfc170cf7b7a409245a5e397d6d38b805bfabcf","6ad3ba7e2e8b848e2aa7b232002edc1133d0a9859c6d0021ce7c485fa0e0aee2","6494e03e0ad75abc28d677937f671e185943c94432dfdd3730393489ef5540e6","a6959104ff0c8ddacb5d3dd2a54beaa3711dfccd3d76428413ead1ee496f8a9f","55610a794506cbdf45098545e4bcf17060d9e2d944d1aea96e070e89c80a3594","54d682c1c408ff10784d92ba94c8112547fb191d67a5e4256712008e56a68875","5b1780df1f37410452f91c6567a7907d1ac1d5ab909fca649982f08000ffc86e","7f2507417641509fb6200105724fb151c34f306e6a56bbd2b808930cc8efb6ed","dabfbc6748f777c0e336da1e5f835503312ad44b246985beb0507cbf45496a2f","6750e4f93dc82d2b43929d1dcb00afa02700e789d8b17e870416b330a8e0c2f9",{"version":"97411cc1fcc65ad115df9a842ca20002e2ccf2ecc92f893eba5bca2010fd5dc9","signature":"6c9b399ac1e6fa8d2c3f43619a6449a739117856533b5a4d7c1fa137d68fe8b4"},{"version":"2b34998bc82207fae7b221ac153d889b16a187917cb094900d992ff9934c8e57","signature":"a764a400fcd7612e2948033a147e071334c32bc05195b1ddc4b59c74fdcd93c3"},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},"a239414887d97a2108550168d9e8bd776b12db5cead2ec75c23fb43493a8bd73","299c5ac6604dd5de59bc529066e9bcff30ffa73129496f96f1d5d697594ad5d2",{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef18cbf1d8374576e3db03ff33c2c7499845972eb0c4adf87392949709c5e160","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"4b34bdb6f29a4347b7db9c0f8622686035fe25adb1c9e927acd8d22a2cbb6ccb","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e456fd5b101271183d99a9087875a282323e3a3ff0d7bcf1881537eaa8b8e63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"fad4e3c207fe23922d0b2d06b01acbfb9714c4f2685cf80fd384c8a100c82fd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","impliedFormat":1},{"version":"4f6ae308c5f2901f2988c817e1511520619e9025b9b12cc7cce2ab2e6ffed78a","impliedFormat":1},{"version":"8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"dbd0794f86b0f3e7c2c28bbe6cbf91adc6ef2203c6a832548ef199816d47039c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"25be1eb939c9c63242c7a45446edb20c40541da967f43f1aa6a00ed53c0552db","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"4371055bb001f40596e2e236b27583e13bf11e75d937962f8947d56519237fb8","impliedFormat":1},{"version":"89189df027e8910200a4b65af1e29a996225cf25975f5c438fbe9361c008fc6b","impliedFormat":1},{"version":"576d74d281154c5799c8590920efd89efd875c57851f68d800c116f6f2156473","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"5ba4a4a1f9fae0550de86889fb06cd997c8406795d85647cbcd992245625680c","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d52b4bb489f2c98e645e145831175f07ac9fb7a03aa596e2ca4f55e742a22fca","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"26b7d0cd4b41ab557ef9e3bfeec42dcf24252843633e3d29f38d2c0b13aaa528","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"08323a8971cb5b2632b532cba1636ad4ca0d76f9f7d0b8d1a0c706fdf5c77b45","impliedFormat":1},{"version":"06fc6fbc8eb2135401cf5adce87655790891ca22ad4f97dfccd73c8cf8d8e6b5","impliedFormat":99},{"version":"1cce0c01dd7e255961851cdb9aa3d5164ec5f0e7f0fefc61e28f29afedda374f","impliedFormat":99},{"version":"7778598dfac1b1f51b383105034e14a0e95bc7b2538e0c562d5d315e7d576b76","impliedFormat":99},{"version":"b14409570c33921eb797282bb7f9c614ccc6008bf3800ba184e950cdfc54ab5c","impliedFormat":99},{"version":"2f0357257a651cc1b14e77b57a63c7b9e4e10ec2bb57e5fdccf83be0efb35280","impliedFormat":99},{"version":"866e63a72a9e85ed1ec74eaebf977be1483f44aa941bcae2ba9b9e3b39ca4395","impliedFormat":99},{"version":"6865d0d503a5ad6775339f6b5dcfa021d72d2567027943b52679222411ad2501","impliedFormat":99},{"version":"dc2be4768bcf96e5d5540ed06fdfbddb2ee210227556ea7b8114ad09d06d35a5","impliedFormat":99},{"version":"e86813f0b7a1ada681045a56323df84077c577ef6351461d4fff4c4afdf79302","impliedFormat":99},{"version":"b3ace759b8242cc742efb6e54460ed9b8ceb9e56ce6a9f9d5f7debe73ed4e416","impliedFormat":99},{"version":"1c4d715c5b7545acecd99744477faa8265ca3772b82c3fa5d77bfc8a27549c7e","impliedFormat":99},{"version":"8f92dbdd3bbc8620e798d221cb7c954f8e24e2eed31749dfdb5654379b031c26","impliedFormat":99},{"version":"f30bfef33d69e4d0837e9e0bbf5ea14ca148d73086dc95a207337894fde45c6b","impliedFormat":99},{"version":"82230238479c48046653e40a6916e3c820b947cb9e28b58384bc4e4cea6a9e92","impliedFormat":99},{"version":"3a6941ff3ea7b78017f9a593d0fd416feb45defa577825751c01004620b507d3","impliedFormat":99},{"version":"481c38439b932ef9e87e68139f6d03b0712bc6fc2880e909886374452a4169b5","impliedFormat":99},{"version":"64054d6374f7b8734304272e837aa0edcf4cfa2949fa5810971f747a0f0d9e9e","impliedFormat":99},{"version":"267498893325497596ff0d99bfdb5030ab4217c43801221d2f2b5eb5734e8244","impliedFormat":99},{"version":"d2ec89fb0934a47f277d5c836b47c1f692767511e3f2c38d00213c8ec4723437","impliedFormat":99},{"version":"475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","impliedFormat":99},{"version":"c1022a2b86fadc3f994589c09331bdb3461966fb87ebb3e28c778159a300044e","impliedFormat":99},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"f8a6bb79327f4a6afc63d28624654522fc80f7536efa7a617ef48200b7a5f673","impliedFormat":1},{"version":"8e0733c50eaac49b4e84954106acc144ec1a8019922d6afcde3762523a3634af","impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"169cc96316cacf8b489aaab4ac6bcef7b33e8779a8902bce57c737b4aa372d16","impliedFormat":1},{"version":"4095f4086e7db146d9e08ad0b24c795ba6e4bddbd4aa87c5c06855efbda974aa","impliedFormat":1},{"version":"d57be402cf1a3f1bd1852fc71b31ff54da497f64dcdcf8af9ad32435e3f32c1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","impliedFormat":1},{"version":"17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","impliedFormat":1},{"version":"6e5c9272f6b3783be7bdddaf207cccdb8e033be3d14c5beacc03ae9d27d50929","impliedFormat":1},{"version":"21ac4cf3f8d8c6e1201cb31f600be708c9a37867fc5c73b7ccf80560fae591c8","impliedFormat":1},{"version":"0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","impliedFormat":1},{"version":"798367363a3274220cbed839b883fe2f52ba7197b25e8cb2ac59c1e1fd8af6b7","impliedFormat":1},{"version":"3fa6aece30a44b769633651b07e0a0859e8194dfbbcfe0d7cda561bc521a5d7c","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"21942c5a654cc18ffc2e1e063c8328aca3b127bbf259c4e97906d4696e3fa915","impliedFormat":1},{"version":"58b63c0f3bfac04d639c31a9fe094089c0bdcc8cda7bc35f1f23828677aa7926","impliedFormat":1},{"version":"d51d662a37aa1f1b97ed4caf4f1c25832047b9bfffcc707b53aedd07cd245303","impliedFormat":1},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1},{"version":"74d5a87c3616cd5d8691059d531504403aa857e09cbaecb1c64dfb9ace0db185","impliedFormat":1}],"root":[249,250,252,253],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"jsx":4,"module":99,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[257,1],[255,2],[400,3],[254,2],[260,4],[256,1],[258,5],[259,1],[363,6],[367,7],[370,8],[379,9],[362,10],[380,2],[381,10],[382,2],[383,2],[384,2],[385,11],[386,2],[388,12],[389,13],[387,2],[390,2],[392,14],[368,2],[394,15],[395,16],[403,17],[399,18],[398,19],[404,20],[405,20],[396,2],[375,21],[378,22],[408,23],[410,24],[365,2],[376,2],[411,25],[622,26],[602,27],[604,28],[603,27],[606,29],[608,30],[609,31],[610,32],[611,30],[612,31],[613,30],[614,33],[615,31],[616,30],[617,34],[618,27],[619,27],[620,35],[607,36],[621,37],[605,37],[623,2],[624,38],[625,39],[397,2],[626,2],[406,40],[407,2],[627,41],[628,24],[630,42],[629,2],[631,2],[632,2],[371,2],[633,10],[391,2],[634,43],[310,44],[311,44],[312,45],[266,46],[313,47],[314,48],[315,49],[261,2],[264,50],[262,2],[263,2],[316,51],[317,52],[318,53],[319,54],[320,55],[321,56],[322,56],[323,57],[324,58],[325,59],[326,60],[267,2],[265,2],[327,61],[328,62],[329,63],[361,64],[330,65],[331,66],[332,67],[333,68],[334,69],[335,70],[336,71],[337,72],[338,73],[339,74],[340,74],[341,75],[342,2],[343,76],[345,77],[344,78],[346,79],[347,80],[348,81],[349,82],[350,83],[351,84],[352,85],[353,86],[354,87],[355,88],[356,89],[357,90],[358,91],[268,2],[269,2],[270,2],[309,92],[359,93],[360,94],[635,2],[642,95],[641,96],[643,2],[373,2],[374,2],[251,97],[233,97],[62,2],[64,98],[65,97],[644,2],[366,99],[669,100],[670,101],[645,102],[648,102],[667,100],[668,100],[658,100],[657,103],[655,100],[650,100],[663,100],[661,100],[665,100],[649,100],[662,100],[666,100],[651,100],[652,100],[664,100],[646,100],[653,100],[654,100],[656,100],[660,100],[671,104],[659,100],[647,100],[684,105],[683,2],[678,104],[680,106],[679,104],[672,104],[673,104],[675,104],[677,104],[681,106],[682,106],[674,106],[676,106],[372,107],[377,108],[393,109],[685,2],[694,110],[686,2],[689,111],[692,112],[693,113],[687,114],[690,115],[688,116],[698,117],[696,118],[697,119],[695,120],[700,121],[699,122],[601,123],[702,124],[701,2],[409,2],[703,2],[704,125],[705,2],[706,126],[707,122],[369,2],[271,2],[63,2],[402,127],[401,128],[691,99],[229,129],[230,130],[132,131],[199,132],[198,133],[197,134],[137,135],[153,136],[151,137],[152,138],[138,139],[223,140],[123,2],[125,2],[126,141],[127,2],[130,142],[133,2],[150,143],[128,2],[145,144],[131,145],[146,146],[149,147],[144,148],[147,147],[124,2],[129,2],[148,149],[154,150],[142,2],[136,151],[134,152],[143,153],[140,154],[139,154],[135,155],[141,156],[155,157],[218,158],[212,159],[205,160],[204,161],[213,162],[214,147],[206,163],[219,164],[200,165],[201,166],[202,167],[222,168],[203,161],[207,164],[208,169],[221,170],[215,171],[216,145],[217,169],[209,167],[220,147],[210,172],[211,173],[156,174],[196,175],[160,176],[161,176],[162,176],[163,176],[164,176],[165,176],[166,176],[167,176],[186,176],[158,176],[168,176],[169,176],[170,176],[171,176],[172,176],[173,176],[193,176],[174,176],[175,176],[176,176],[191,176],[177,176],[192,176],[178,176],[189,176],[190,176],[179,176],[180,176],[181,176],[187,176],[188,176],[182,176],[183,176],[184,176],[185,176],[194,176],[195,176],[159,177],[157,178],[122,2],[364,179],[231,97],[75,2],[228,180],[227,2],[640,181],[637,182],[639,183],[638,2],[636,2],[73,184],[67,185],[68,186],[70,185],[72,187],[69,188],[66,97],[71,2],[600,189],[573,2],[551,190],[549,190],[464,191],[415,192],[414,193],[550,194],[535,195],[457,196],[413,197],[412,198],[599,193],[564,199],[563,199],[475,200],[571,191],[572,191],[574,201],[575,191],[576,198],[577,191],[548,191],[578,191],[579,202],[580,191],[581,199],[582,203],[583,191],[584,191],[585,191],[586,191],[587,199],[588,191],[589,191],[590,191],[591,191],[592,204],[593,191],[594,191],[595,191],[596,191],[597,191],[417,198],[418,198],[419,198],[420,198],[421,198],[422,198],[423,198],[424,191],[426,205],[427,198],[425,198],[428,198],[429,198],[430,198],[431,198],[432,198],[433,198],[434,191],[435,198],[436,198],[437,198],[438,198],[439,198],[440,191],[441,198],[442,198],[443,198],[444,198],[445,198],[446,198],[447,191],[449,206],[448,198],[450,198],[451,198],[452,198],[453,198],[454,204],[455,191],[456,191],[470,207],[458,208],[459,198],[460,198],[461,191],[462,198],[463,198],[465,209],[466,198],[467,198],[468,198],[469,198],[471,198],[472,198],[473,198],[474,198],[476,210],[477,198],[478,198],[479,198],[480,191],[481,198],[482,211],[483,211],[484,211],[485,191],[486,198],[487,198],[488,198],[493,198],[489,198],[490,191],[491,198],[492,191],[494,198],[495,198],[496,198],[497,198],[498,198],[499,198],[500,191],[501,198],[502,198],[503,198],[504,198],[505,198],[506,198],[507,198],[508,198],[509,198],[510,198],[511,198],[512,198],[513,198],[514,198],[515,198],[516,198],[517,212],[518,198],[519,198],[520,198],[521,198],[522,198],[523,198],[524,191],[525,191],[526,191],[527,191],[528,191],[529,198],[530,198],[531,198],[532,198],[598,191],[534,213],[557,214],[552,214],[543,215],[541,216],[555,217],[544,218],[558,219],[553,220],[554,217],[556,221],[542,2],[547,2],[539,222],[540,223],[537,2],[538,224],[536,198],[545,225],[416,226],[565,2],[566,2],[567,2],[568,2],[569,2],[570,2],[559,2],[562,199],[561,2],[560,227],[533,228],[546,229],[61,230],[60,2],[58,2],[59,2],[10,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[22,2],[23,2],[4,2],[24,2],[28,2],[25,2],[26,2],[27,2],[29,2],[30,2],[31,2],[5,2],[32,2],[33,2],[34,2],[35,2],[6,2],[39,2],[36,2],[37,2],[38,2],[40,2],[7,2],[41,2],[46,2],[47,2],[42,2],[43,2],[44,2],[45,2],[8,2],[51,2],[48,2],[49,2],[50,2],[52,2],[9,2],[53,2],[54,2],[55,2],[57,2],[56,2],[1,2],[287,231],[297,232],[286,231],[307,233],[278,234],[277,235],[306,182],[300,236],[305,237],[280,238],[294,239],[279,240],[303,241],[275,242],[274,182],[304,243],[276,244],[281,245],[282,2],[285,245],[272,2],[308,246],[298,247],[289,248],[290,249],[292,250],[288,251],[291,252],[301,182],[283,253],[284,254],[293,255],[273,256],[296,247],[295,245],[299,2],[302,257],[119,97],[118,97],[120,258],[90,2],[224,259],[121,2],[225,260],[117,261],[99,262],[103,2],[106,263],[111,2],[115,264],[110,97],[113,264],[107,2],[100,262],[105,265],[104,2],[101,266],[112,2],[98,267],[109,266],[108,266],[102,266],[114,2],[116,2],[226,268],[86,269],[88,270],[87,266],[85,269],[84,271],[91,272],[95,273],[94,2],[97,274],[92,2],[93,275],[96,2],[89,276],[79,277],[81,277],[78,277],[82,277],[83,278],[76,279],[77,277],[80,280],[74,277],[235,281],[232,281],[247,282],[239,283],[245,283],[242,277],[246,281],[234,284],[238,285],[241,283],[236,286],[244,283],[243,281],[240,281],[237,283],[248,287],[250,288],[252,289],[253,290],[249,291]],"semanticDiagnosticsPerFile":[[250,[{"start":634,"length":10,"code":2339,"category":1,"messageText":"Property 'getContext' does not exist on type 'PluginModule & PluginMetadata'."}]]],"affectedFilesPendingEmit":[79,81,78,82,83,76,77,80,74,250,252,253,249],"emitSignatures":[74,76,77,78,79,80,81,82,83,249,250,252,253],"version":"5.9.3"} \ No newline at end of file diff --git a/services/workflows/developer-svc/package.json b/services/workflows/developer-svc/package.json index bdddc5528..720de2106 100644 --- a/services/workflows/developer-svc/package.json +++ b/services/workflows/developer-svc/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/cors": "^2.8.17", - "@types/express": "^5.0.0", + "@types/express": "^4.17.25", "@types/node": "^20.19.33", "@types/uuid": "^10.0.0", "tsx": "^4.19.2",