{"version":3,"file":"parseAWSExports.mjs","sources":["../../src/parseAWSExports.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from './Logger';\nimport { AmplifyError } from './errors';\nconst logger = new ConsoleLogger('parseAWSExports');\nconst authTypeMapping = {\n    API_KEY: 'apiKey',\n    AWS_IAM: 'iam',\n    AMAZON_COGNITO_USER_POOLS: 'userPool',\n    OPENID_CONNECT: 'oidc',\n    NONE: 'none',\n    AWS_LAMBDA: 'lambda',\n    // `LAMBDA` is an incorrect value that was added during the v6 rewrite.\n    // Keeping it as a valid value until v7 to prevent breaking customers who might\n    // be relying on it as a workaround.\n    // ref: https://github.com/aws-amplify/amplify-js/pull/12922\n    // TODO: @v7 remove next line\n    LAMBDA: 'lambda',\n};\n/**\n * Converts the object imported from `aws-exports.js` or `amplifyconfiguration.json` files generated by\n * the Amplify CLI into an object that conforms to the {@link ResourcesConfig}.\n *\n * @param config A configuration object imported  from `aws-exports.js` or `amplifyconfiguration.json`.\n *\n * @returns An object that conforms to the {@link ResourcesConfig} .\n */\nexport const parseAWSExports = (config = {}) => {\n    if (!Object.prototype.hasOwnProperty.call(config, 'aws_project_region')) {\n        throw new AmplifyError({\n            name: 'InvalidParameterException',\n            message: 'Invalid config parameter.',\n            recoverySuggestion: 'Ensure passing the config object imported from  `amplifyconfiguration.json`.',\n        });\n    }\n    const { aws_appsync_apiKey, aws_appsync_authenticationType, aws_appsync_graphqlEndpoint, aws_appsync_region, aws_bots_config, aws_cognito_identity_pool_id, aws_cognito_sign_up_verification_method, aws_cognito_mfa_configuration, aws_cognito_mfa_types, aws_cognito_password_protection_settings, aws_cognito_verification_mechanisms, aws_cognito_signup_attributes, aws_cognito_social_providers, aws_cognito_username_attributes, aws_mandatory_sign_in, aws_mobile_analytics_app_id, aws_mobile_analytics_app_region, aws_user_files_s3_bucket, aws_user_files_s3_bucket_region, aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing, aws_user_pools_id, aws_user_pools_web_client_id, geo, oauth, predictions, aws_cloud_logic_custom, Notifications, modelIntrospection, } = config;\n    const amplifyConfig = {};\n    // Analytics\n    if (aws_mobile_analytics_app_id) {\n        amplifyConfig.Analytics = {\n            Pinpoint: {\n                appId: aws_mobile_analytics_app_id,\n                region: aws_mobile_analytics_app_region,\n            },\n        };\n    }\n    // Notifications\n    const { InAppMessaging, Push } = Notifications ?? {};\n    if (InAppMessaging?.AWSPinpoint || Push?.AWSPinpoint) {\n        if (InAppMessaging?.AWSPinpoint) {\n            const { appId, region } = InAppMessaging.AWSPinpoint;\n            amplifyConfig.Notifications = {\n                InAppMessaging: {\n                    Pinpoint: {\n                        appId,\n                        region,\n                    },\n                },\n            };\n        }\n        if (Push?.AWSPinpoint) {\n            const { appId, region } = Push.AWSPinpoint;\n            amplifyConfig.Notifications = {\n                ...amplifyConfig.Notifications,\n                PushNotification: {\n                    Pinpoint: {\n                        appId,\n                        region,\n                    },\n                },\n            };\n        }\n    }\n    // Interactions\n    if (Array.isArray(aws_bots_config)) {\n        amplifyConfig.Interactions = {\n            LexV1: Object.fromEntries(aws_bots_config.map(bot => [bot.name, bot])),\n        };\n    }\n    // API\n    if (aws_appsync_graphqlEndpoint) {\n        const defaultAuthMode = authTypeMapping[aws_appsync_authenticationType];\n        if (!defaultAuthMode) {\n            logger.debug(`Invalid authentication type ${aws_appsync_authenticationType}. Falling back to IAM.`);\n        }\n        amplifyConfig.API = {\n            GraphQL: {\n                endpoint: aws_appsync_graphqlEndpoint,\n                apiKey: aws_appsync_apiKey,\n                region: aws_appsync_region,\n                defaultAuthMode: defaultAuthMode ?? 'iam',\n            },\n        };\n        if (modelIntrospection) {\n            amplifyConfig.API.GraphQL.modelIntrospection = modelIntrospection;\n        }\n    }\n    // Auth\n    const mfaConfig = aws_cognito_mfa_configuration\n        ? {\n            status: aws_cognito_mfa_configuration &&\n                aws_cognito_mfa_configuration.toLowerCase(),\n            totpEnabled: aws_cognito_mfa_types?.includes('TOTP') ?? false,\n            smsEnabled: aws_cognito_mfa_types?.includes('SMS') ?? false,\n        }\n        : undefined;\n    const passwordFormatConfig = aws_cognito_password_protection_settings\n        ? {\n            minLength: aws_cognito_password_protection_settings.passwordPolicyMinLength,\n            requireLowercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_LOWERCASE') ?? false,\n            requireUppercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_UPPERCASE') ?? false,\n            requireNumbers: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_NUMBERS') ?? false,\n            requireSpecialCharacters: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_SYMBOLS') ?? false,\n        }\n        : undefined;\n    const mergedUserAttributes = Array.from(new Set([\n        ...(aws_cognito_verification_mechanisms ?? []),\n        ...(aws_cognito_signup_attributes ?? []),\n    ]));\n    const userAttributes = mergedUserAttributes.reduce((attributes, key) => ({\n        ...attributes,\n        // All user attributes generated by the CLI are required\n        [key.toLowerCase()]: { required: true },\n    }), {});\n    const loginWithEmailEnabled = aws_cognito_username_attributes?.includes('EMAIL') ?? false;\n    const loginWithPhoneEnabled = aws_cognito_username_attributes?.includes('PHONE_NUMBER') ?? false;\n    if (aws_cognito_identity_pool_id || aws_user_pools_id) {\n        amplifyConfig.Auth = {\n            Cognito: {\n                identityPoolId: aws_cognito_identity_pool_id,\n                allowGuestAccess: aws_mandatory_sign_in !== 'enable',\n                signUpVerificationMethod: aws_cognito_sign_up_verification_method,\n                userAttributes,\n                userPoolClientId: aws_user_pools_web_client_id,\n                userPoolId: aws_user_pools_id,\n                mfa: mfaConfig,\n                passwordFormat: passwordFormatConfig,\n                loginWith: {\n                    username: !(loginWithEmailEnabled || loginWithPhoneEnabled),\n                    email: loginWithEmailEnabled,\n                    phone: loginWithPhoneEnabled,\n                },\n            },\n        };\n    }\n    const hasOAuthConfig = oauth ? Object.keys(oauth).length > 0 : false;\n    const hasSocialProviderConfig = aws_cognito_social_providers\n        ? aws_cognito_social_providers.length > 0\n        : false;\n    if (amplifyConfig.Auth && hasOAuthConfig) {\n        amplifyConfig.Auth.Cognito.loginWith = {\n            ...amplifyConfig.Auth.Cognito.loginWith,\n            oauth: {\n                ...getOAuthConfig(oauth),\n                ...(hasSocialProviderConfig && {\n                    providers: parseSocialProviders(aws_cognito_social_providers),\n                }),\n            },\n        };\n    }\n    // Storage\n    if (aws_user_files_s3_bucket) {\n        amplifyConfig.Storage = {\n            S3: {\n                bucket: aws_user_files_s3_bucket,\n                region: aws_user_files_s3_bucket_region,\n                dangerouslyConnectToHttpEndpointForTesting: aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing,\n            },\n        };\n    }\n    // Geo\n    if (geo) {\n        const { amazon_location_service } = geo;\n        amplifyConfig.Geo = {\n            LocationService: {\n                maps: amazon_location_service.maps,\n                geofenceCollections: amazon_location_service.geofenceCollections,\n                searchIndices: amazon_location_service.search_indices,\n                region: amazon_location_service.region,\n            },\n        };\n    }\n    // REST API\n    if (aws_cloud_logic_custom) {\n        amplifyConfig.API = {\n            ...amplifyConfig.API,\n            REST: aws_cloud_logic_custom.reduce((acc, api) => {\n                const { name, endpoint, region, service } = api;\n                return {\n                    ...acc,\n                    [name]: {\n                        endpoint,\n                        ...(service ? { service } : undefined),\n                        ...(region ? { region } : undefined),\n                    },\n                };\n            }, {}),\n        };\n    }\n    // Predictions\n    if (predictions) {\n        // map VoiceId from speechGenerator defaults to voiceId\n        const { VoiceId: voiceId } = predictions?.convert?.speechGenerator?.defaults ?? {};\n        amplifyConfig.Predictions = voiceId\n            ? {\n                ...predictions,\n                convert: {\n                    ...predictions.convert,\n                    speechGenerator: {\n                        ...predictions.convert.speechGenerator,\n                        defaults: { voiceId },\n                    },\n                },\n            }\n            : predictions;\n    }\n    return amplifyConfig;\n};\nconst getRedirectUrl = (redirectStr) => redirectStr?.split(',') ?? [];\nconst getOAuthConfig = ({ domain, scope, redirectSignIn, redirectSignOut, responseType, }) => ({\n    domain,\n    scopes: scope,\n    redirectSignIn: getRedirectUrl(redirectSignIn),\n    redirectSignOut: getRedirectUrl(redirectSignOut),\n    responseType,\n});\nconst parseSocialProviders = (aws_cognito_social_providers) => {\n    return aws_cognito_social_providers.map((provider) => {\n        const updatedProvider = provider.toLowerCase();\n        return updatedProvider.charAt(0).toUpperCase() + updatedProvider.slice(1);\n    });\n};\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAGA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,iBAAiB,CAAC;AACnD,MAAM,eAAe,GAAG;AACxB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,yBAAyB,EAAE,UAAU;AACzC,IAAI,cAAc,EAAE,MAAM;AAC1B,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,UAAU,EAAE,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,EAAE,QAAQ;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK;AAChD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE;AAC7E,QAAQ,MAAM,IAAI,YAAY,CAAC;AAC/B,YAAY,IAAI,EAAE,2BAA2B;AAC7C,YAAY,OAAO,EAAE,2BAA2B;AAChD,YAAY,kBAAkB,EAAE,8EAA8E;AAC9G,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,eAAe,EAAE,4BAA4B,EAAE,uCAAuC,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,wCAAwC,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,kEAAkE,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,kBAAkB,GAAG,GAAG,MAAM;AAC/wB,IAAI,MAAM,aAAa,GAAG,EAAE;AAC5B;AACA,IAAI,IAAI,2BAA2B,EAAE;AACrC,QAAQ,aAAa,CAAC,SAAS,GAAG;AAClC,YAAY,QAAQ,EAAE;AACtB,gBAAgB,KAAK,EAAE,2BAA2B;AAClD,gBAAgB,MAAM,EAAE,+BAA+B;AACvD,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA,IAAI,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,aAAa,IAAI,EAAE;AACxD,IAAI,IAAI,cAAc,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,EAAE;AAC1D,QAAQ,IAAI,cAAc,EAAE,WAAW,EAAE;AACzC,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,WAAW;AAChE,YAAY,aAAa,CAAC,aAAa,GAAG;AAC1C,gBAAgB,cAAc,EAAE;AAChC,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,KAAK;AAC7B,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,QAAQ,IAAI,IAAI,EAAE,WAAW,EAAE;AAC/B,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW;AACtD,YAAY,aAAa,CAAC,aAAa,GAAG;AAC1C,gBAAgB,GAAG,aAAa,CAAC,aAAa;AAC9C,gBAAgB,gBAAgB,EAAE;AAClC,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,KAAK;AAC7B,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACxC,QAAQ,aAAa,CAAC,YAAY,GAAG;AACrC,YAAY,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,2BAA2B,EAAE;AACrC,QAAQ,MAAM,eAAe,GAAG,eAAe,CAAC,8BAA8B,CAAC;AAC/E,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;AAC/G,QAAQ;AACR,QAAQ,aAAa,CAAC,GAAG,GAAG;AAC5B,YAAY,OAAO,EAAE;AACrB,gBAAgB,QAAQ,EAAE,2BAA2B;AACrD,gBAAgB,MAAM,EAAE,kBAAkB;AAC1C,gBAAgB,MAAM,EAAE,kBAAkB;AAC1C,gBAAgB,eAAe,EAAE,eAAe,IAAI,KAAK;AACzD,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,GAAG,kBAAkB;AAC7E,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,UAAU;AACV,YAAY,MAAM,EAAE,6BAA6B;AACjD,gBAAgB,6BAA6B,CAAC,WAAW,EAAE;AAC3D,YAAY,WAAW,EAAE,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK;AACzE,YAAY,UAAU,EAAE,qBAAqB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK;AACvE;AACA,UAAU,SAAS;AACnB,IAAI,MAAM,oBAAoB,GAAG;AACjC,UAAU;AACV,YAAY,SAAS,EAAE,wCAAwC,CAAC,uBAAuB;AACvF,YAAY,gBAAgB,EAAE,wCAAwC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK;AACxI,YAAY,gBAAgB,EAAE,wCAAwC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK;AACxI,YAAY,cAAc,EAAE,wCAAwC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,KAAK;AACpI,YAAY,wBAAwB,EAAE,wCAAwC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,KAAK;AAC9I;AACA,UAAU,SAAS;AACnB,IAAI,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AACpD,QAAQ,IAAI,mCAAmC,IAAI,EAAE,CAAC;AACtD,QAAQ,IAAI,6BAA6B,IAAI,EAAE,CAAC;AAChD,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,GAAG,MAAM;AAC7E,QAAQ,GAAG,UAAU;AACrB;AACA,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/C,KAAK,CAAC,EAAE,EAAE,CAAC;AACX,IAAI,MAAM,qBAAqB,GAAG,+BAA+B,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK;AAC7F,IAAI,MAAM,qBAAqB,GAAG,+BAA+B,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK;AACpG,IAAI,IAAI,4BAA4B,IAAI,iBAAiB,EAAE;AAC3D,QAAQ,aAAa,CAAC,IAAI,GAAG;AAC7B,YAAY,OAAO,EAAE;AACrB,gBAAgB,cAAc,EAAE,4BAA4B;AAC5D,gBAAgB,gBAAgB,EAAE,qBAAqB,KAAK,QAAQ;AACpE,gBAAgB,wBAAwB,EAAE,uCAAuC;AACjF,gBAAgB,cAAc;AAC9B,gBAAgB,gBAAgB,EAAE,4BAA4B;AAC9D,gBAAgB,UAAU,EAAE,iBAAiB;AAC7C,gBAAgB,GAAG,EAAE,SAAS;AAC9B,gBAAgB,cAAc,EAAE,oBAAoB;AACpD,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,QAAQ,EAAE,EAAE,qBAAqB,IAAI,qBAAqB,CAAC;AAC/E,oBAAoB,KAAK,EAAE,qBAAqB;AAChD,oBAAoB,KAAK,EAAE,qBAAqB;AAChD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;AACxE,IAAI,MAAM,uBAAuB,GAAG;AACpC,UAAU,4BAA4B,CAAC,MAAM,GAAG;AAChD,UAAU,KAAK;AACf,IAAI,IAAI,aAAa,CAAC,IAAI,IAAI,cAAc,EAAE;AAC9C,QAAQ,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG;AAC/C,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;AACnD,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC;AACxC,gBAAgB,IAAI,uBAAuB,IAAI;AAC/C,oBAAoB,SAAS,EAAE,oBAAoB,CAAC,4BAA4B,CAAC;AACjF,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,wBAAwB,EAAE;AAClC,QAAQ,aAAa,CAAC,OAAO,GAAG;AAChC,YAAY,EAAE,EAAE;AAChB,gBAAgB,MAAM,EAAE,wBAAwB;AAChD,gBAAgB,MAAM,EAAE,+BAA+B;AACvD,gBAAgB,0CAA0C,EAAE,kEAAkE;AAC9H,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,MAAM,EAAE,uBAAuB,EAAE,GAAG,GAAG;AAC/C,QAAQ,aAAa,CAAC,GAAG,GAAG;AAC5B,YAAY,eAAe,EAAE;AAC7B,gBAAgB,IAAI,EAAE,uBAAuB,CAAC,IAAI;AAClD,gBAAgB,mBAAmB,EAAE,uBAAuB,CAAC,mBAAmB;AAChF,gBAAgB,aAAa,EAAE,uBAAuB,CAAC,cAAc;AACrE,gBAAgB,MAAM,EAAE,uBAAuB,CAAC,MAAM;AACtD,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,sBAAsB,EAAE;AAChC,QAAQ,aAAa,CAAC,GAAG,GAAG;AAC5B,YAAY,GAAG,aAAa,CAAC,GAAG;AAChC,YAAY,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AAC9D,gBAAgB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;AAC/D,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,GAAG;AAC1B,oBAAoB,CAAC,IAAI,GAAG;AAC5B,wBAAwB,QAAQ;AAChC,wBAAwB,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AAC9D,wBAAwB,IAAI,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,YAAY,CAAC,EAAE,EAAE,CAAC;AAClB,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,WAAW,EAAE;AACrB;AACA,QAAQ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,IAAI,EAAE;AAC1F,QAAQ,aAAa,CAAC,WAAW,GAAG;AACpC,cAAc;AACd,gBAAgB,GAAG,WAAW;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,GAAG,WAAW,CAAC,OAAO;AAC1C,oBAAoB,eAAe,EAAE;AACrC,wBAAwB,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe;AAC9D,wBAAwB,QAAQ,EAAE,EAAE,OAAO,EAAE;AAC7C,qBAAqB;AACrB,iBAAiB;AACjB;AACA,cAAc,WAAW;AACzB,IAAI;AACJ,IAAI,OAAO,aAAa;AACxB;AACA,MAAM,cAAc,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AACrE,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,GAAG,MAAM;AAC/F,IAAI,MAAM;AACV,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,cAAc,EAAE,cAAc,CAAC,cAAc,CAAC;AAClD,IAAI,eAAe,EAAE,cAAc,CAAC,eAAe,CAAC;AACpD,IAAI,YAAY;AAChB,CAAC,CAAC;AACF,MAAM,oBAAoB,GAAG,CAAC,4BAA4B,KAAK;AAC/D,IAAI,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AAC1D,QAAQ,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,EAAE;AACtD,QAAQ,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,IAAI,CAAC,CAAC;AACN,CAAC;;;;"}