All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.s3.endpoints.internal.DefaultS3EndpointProvider Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.s3.endpoints.internal;

import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.endpoints.Endpoint;
import software.amazon.awssdk.services.s3.endpoints.S3EndpointParams;
import software.amazon.awssdk.services.s3.endpoints.S3EndpointProvider;
import software.amazon.awssdk.utils.CompletableFutureUtils;
import software.amazon.awssdk.utils.Logger;
import software.amazon.awssdk.utils.MapUtils;
import software.amazon.awssdk.utils.Validate;

@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
public final class DefaultS3EndpointProvider implements S3EndpointProvider {
    private static final Logger LOG = Logger.loggerFor(DefaultS3EndpointProvider.class);

    private static final EndpointRuleset ENDPOINT_RULE_SET = ruleSet();

    private final EndpointAuthSchemeStrategy endpointAuthSchemeStrategy;

    public DefaultS3EndpointProvider() {
        EndpointAuthSchemeStrategyFactory endpointAuthSchemeStrategyFactory = new S3EndpointAuthSchemeStrategyFactory();
        this.endpointAuthSchemeStrategy = endpointAuthSchemeStrategyFactory.endpointAuthSchemeStrategy();
    }

    @Override
    public CompletableFuture resolveEndpoint(S3EndpointParams endpointParams) {
        Validate.notNull(endpointParams.useFips(), "Parameter 'UseFIPS' must not be null");
        Validate.notNull(endpointParams.useDualStack(), "Parameter 'UseDualStack' must not be null");
        Validate.notNull(endpointParams.forcePathStyle(), "Parameter 'ForcePathStyle' must not be null");
        Validate.notNull(endpointParams.accelerate(), "Parameter 'Accelerate' must not be null");
        Validate.notNull(endpointParams.useGlobalEndpoint(), "Parameter 'UseGlobalEndpoint' must not be null");
        Validate.notNull(endpointParams.disableMultiRegionAccessPoints(),
                "Parameter 'DisableMultiRegionAccessPoints' must not be null");
        Value res = new DefaultRuleEngine().evaluate(ENDPOINT_RULE_SET, toIdentifierValueMap(endpointParams));
        try {
            return CompletableFuture.completedFuture(valueAsEndpointOrThrow(res));
        } catch (Exception error) {
            return CompletableFutureUtils.failedFuture(error);
        }
    }

    private static Map toIdentifierValueMap(S3EndpointParams params) {
        Map paramsMap = new HashMap<>();
        if (params.bucket() != null) {
            paramsMap.put(Identifier.of("Bucket"), Value.fromStr(params.bucket()));
        }
        if (params.region() != null) {
            paramsMap.put(Identifier.of("Region"), Value.fromStr(params.region().id()));
        }
        if (params.useFips() != null) {
            paramsMap.put(Identifier.of("UseFIPS"), Value.fromBool(params.useFips()));
        }
        if (params.useDualStack() != null) {
            paramsMap.put(Identifier.of("UseDualStack"), Value.fromBool(params.useDualStack()));
        }
        if (params.endpoint() != null) {
            paramsMap.put(Identifier.of("Endpoint"), Value.fromStr(params.endpoint()));
        }
        if (params.forcePathStyle() != null) {
            paramsMap.put(Identifier.of("ForcePathStyle"), Value.fromBool(params.forcePathStyle()));
        }
        if (params.accelerate() != null) {
            paramsMap.put(Identifier.of("Accelerate"), Value.fromBool(params.accelerate()));
        }
        if (params.useGlobalEndpoint() != null) {
            paramsMap.put(Identifier.of("UseGlobalEndpoint"), Value.fromBool(params.useGlobalEndpoint()));
        }
        if (params.useObjectLambdaEndpoint() != null) {
            paramsMap.put(Identifier.of("UseObjectLambdaEndpoint"), Value.fromBool(params.useObjectLambdaEndpoint()));
        }
        if (params.key() != null) {
            paramsMap.put(Identifier.of("Key"), Value.fromStr(params.key()));
        }
        if (params.prefix() != null) {
            paramsMap.put(Identifier.of("Prefix"), Value.fromStr(params.prefix()));
        }
        if (params.disableAccessPoints() != null) {
            paramsMap.put(Identifier.of("DisableAccessPoints"), Value.fromBool(params.disableAccessPoints()));
        }
        if (params.disableMultiRegionAccessPoints() != null) {
            paramsMap.put(Identifier.of("DisableMultiRegionAccessPoints"),
                    Value.fromBool(params.disableMultiRegionAccessPoints()));
        }
        if (params.useArnRegion() != null) {
            paramsMap.put(Identifier.of("UseArnRegion"), Value.fromBool(params.useArnRegion()));
        }
        if (params.useS3ExpressControlEndpoint() != null) {
            paramsMap.put(Identifier.of("UseS3ExpressControlEndpoint"), Value.fromBool(params.useS3ExpressControlEndpoint()));
        }
        if (params.disableS3ExpressSessionAuth() != null) {
            paramsMap.put(Identifier.of("DisableS3ExpressSessionAuth"), Value.fromBool(params.disableS3ExpressSessionAuth()));
        }
        return paramsMap;
    }

    Endpoint valueAsEndpointOrThrow(Value value) {
        if (value instanceof Value.Endpoint) {
            Value.Endpoint endpoint = value.expectEndpoint();
            Endpoint.Builder builder = Endpoint.builder();
            builder.url(URI.create(endpoint.getUrl()));
            Map> headers = endpoint.getHeaders();
            if (headers != null) {
                headers.forEach((name, values) -> values.forEach(v -> builder.putHeader(name, v)));
            }
            addKnownProperties(builder, endpoint.getProperties());
            return builder.build();
        } else if (value instanceof Value.Str) {
            String errorMsg = value.expectString();
            if (errorMsg.contains("Invalid ARN") && errorMsg.contains(":s3:::")) {
                errorMsg += ". Use the bucket name instead of simple bucket ARNs in GetBucketLocationRequest.";
            }
            throw SdkClientException.create(errorMsg);
        } else {
            throw SdkClientException.create("Rule engine return neither an endpoint result or error value. Returned value was: "
                    + value);
        }
    }

    private static Rule endpointRule_1() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build()).error("Accelerate cannot be used with FIPS");
    }

    private static Rule endpointRule_2() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .error("Cannot set dual-stack in combination with a custom endpoint.");
    }

    private static Rule endpointRule_3() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build()).error("A custom endpoint cannot be combined with FIPS");
    }

    private static Rule endpointRule_4() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("A custom endpoint cannot be combined with S3 Accelerate");
    }

    private static Rule endpointRule_5() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("partitionResult")),
                                                                Expr.of("name"))).build().validate(), Expr.of("aws-cn"))).build()
                                        .validate()).build()).error("Partition does not support FIPS");
    }

    private static Rule endpointRule_7() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build()).error("S3Express does not support Dual-stack.");
    }

    private static Rule endpointRule_8() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("S3Express does not support S3 Accelerate.");
    }

    private static Rule endpointRule_13() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_12() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("uriEncode").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).result("uri_encoded_bucket").build())
                .treeRule(Arrays.asList(endpointRule_13()));
    }

    private static Rule endpointRule_11() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(true))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_12()));
    }

    private static Rule endpointRule_15() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_14() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.isVirtualHostableS3Bucket")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_15()));
    }

    private static Rule endpointRule_16() {
        return Rule.builder().error("S3Express bucket name is not a valid virtual hostable name.");
    }

    private static Rule endpointRule_10() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableS3ExpressSessionAuth")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableS3ExpressSessionAuth")), Expr.of(true)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_11(), endpointRule_14(), endpointRule_16()));
    }

    private static Rule endpointRule_19() {
        return Rule.builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_18() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("uriEncode").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).result("uri_encoded_bucket").build())
                .treeRule(Arrays.asList(endpointRule_19()));
    }

    private static Rule endpointRule_17() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(true))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_18()));
    }

    private static Rule endpointRule_21() {
        return Rule.builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_20() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.isVirtualHostableS3Bucket")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_21()));
    }

    private static Rule endpointRule_22() {
        return Rule.builder().error("S3Express bucket name is not a valid virtual hostable name.");
    }

    private static Rule endpointRule_9() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .treeRule(Arrays.asList(endpointRule_10(), endpointRule_17(), endpointRule_20(), endpointRule_22()));
    }

    private static Rule endpointRule_25() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3express"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_26() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_24() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("uriEncode").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).result("uri_encoded_bucket").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_25(), endpointRule_26()));
    }

    private static Rule endpointRule_23() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseS3ExpressControlEndpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseS3ExpressControlEndpoint")), Expr.of(true)))
                                        .build().validate()).build()).treeRule(Arrays.asList(endpointRule_24()));
    }

    private static Rule endpointRule_30() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3express"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_31() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_29() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(6), Expr.of(14),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneId").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(14), Expr.of(16),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneDelim")
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("s3expressAvailabilityZoneDelim")),
                                                Expr.of("--"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_30(), endpointRule_31()));
    }

    private static Rule endpointRule_33() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3express"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_34() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_32() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(6), Expr.of(15),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneId").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(15), Expr.of(17),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneDelim")
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("s3expressAvailabilityZoneDelim")),
                                                Expr.of("--"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_33(), endpointRule_34()));
    }

    private static Rule endpointRule_35() {
        return Rule.builder().error("Unrecognized S3Express bucket name format.");
    }

    private static Rule endpointRule_28() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableS3ExpressSessionAuth")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableS3ExpressSessionAuth")), Expr.of(true)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_29(), endpointRule_32(), endpointRule_35()));
    }

    private static Rule endpointRule_37() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_38() {
        return Rule.builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_36() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(6), Expr.of(14),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneId").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(14), Expr.of(16),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneDelim")
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("s3expressAvailabilityZoneDelim")),
                                                Expr.of("--"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_37(), endpointRule_38()));
    }

    private static Rule endpointRule_40() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_41() {
        return Rule.builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4-s3express"),
                                                Identifier.of("signingName"), Literal.fromStr("s3express"),
                                                Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_39() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(6), Expr.of(15),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneId").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(15), Expr.of(17),
                                                Expr.of(true))).build().validate()).result("s3expressAvailabilityZoneDelim")
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("s3expressAvailabilityZoneDelim")),
                                                Expr.of("--"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_40(), endpointRule_41()));
    }

    private static Rule endpointRule_42() {
        return Rule.builder().error("Unrecognized S3Express bucket name format.");
    }

    private static Rule endpointRule_27() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.isVirtualHostableS3Bucket")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(Arrays.asList(endpointRule_28(), endpointRule_36(), endpointRule_39(), endpointRule_42()));
    }

    private static Rule endpointRule_43() {
        return Rule.builder().error("S3Express bucket name is not a valid virtual hostable name.");
    }

    private static Rule endpointRule_6() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(0), Expr.of(6),
                                                Expr.of(true))).build().validate()).result("bucketSuffix").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketSuffix")), Expr.of("--x-s3"))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_7(), endpointRule_8(), endpointRule_9(), endpointRule_23(), endpointRule_27(),
                                endpointRule_43()));
    }

    private static Rule endpointRule_45() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3express"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_46() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3express-control-fips.{Region}.amazonaws.com"))
                                .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3express"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_47() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3express-control.{Region}.amazonaws.com"))
                        .addProperty(Identifier.of("backend"), Literal.fromStr("S3Express"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3express"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_44() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseS3ExpressControlEndpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseS3ExpressControlEndpoint")), Expr.of(true)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_45(), endpointRule_46(), endpointRule_47()));
    }

    private static Rule endpointRule_52() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .error("Expected a endpoint to be specified but no endpoint was found");
    }

    private static Rule endpointRule_53() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.ec2.{url#authority}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-outposts"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_51() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("regionPrefix")), Expr.of("beta"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_52(), endpointRule_53()));
    }

    private static Rule endpointRule_54() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3-outposts"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_50() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("hardwareType")), Expr.of("e"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_51(), endpointRule_54()));
    }

    private static Rule endpointRule_57() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .error("Expected a endpoint to be specified but no endpoint was found");
    }

    private static Rule endpointRule_58() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.op-{outpostId}.{url#authority}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-outposts"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_56() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("regionPrefix")), Expr.of("beta"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_57(), endpointRule_58()));
    }

    private static Rule endpointRule_59() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3-outposts"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_55() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("hardwareType")), Expr.of("o"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_56(), endpointRule_59()));
    }

    private static Rule endpointRule_60() {
        return Rule.builder().error("Unrecognized hardware type: \"Expected hardware type o or e but got {hardwareType}\"");
    }

    private static Rule endpointRule_49() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("outpostId")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(Arrays.asList(endpointRule_50(), endpointRule_55(), endpointRule_60()));
    }

    private static Rule endpointRule_61() {
        return Rule.builder().error("Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.");
    }

    private static Rule endpointRule_48() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(49), Expr.of(50),
                                                Expr.of(true))).build().validate()).result("hardwareType").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(8), Expr.of(12),
                                                Expr.of(true))).build().validate()).result("regionPrefix").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(0), Expr.of(7),
                                                Expr.of(true))).build().validate()).result("bucketAliasSuffix").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(32), Expr.of(49),
                                                Expr.of(true))).build().validate()).result("outpostId").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("regionPartition").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketAliasSuffix")), Expr.of("--op-s3")))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_49(), endpointRule_61()));
    }

    private static Rule endpointRule_63() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("isSet")
                                                .argv(Arrays.asList(FnNode.builder().fn("parseURL")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                                        .validate())).build().validate())).build().validate()).build())
                .error("Custom endpoint `{Endpoint}` was not a valid URI");
    }

    private static Rule endpointRule_67() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("partitionResult")),
                                                                Expr.of("name"))).build().validate(), Expr.of("aws-cn"))).build()
                                        .validate()).build()).error("S3 Accelerate cannot be used in this region");
    }

    private static Rule endpointRule_68() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_70() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_69() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_70()));
    }

    private static Rule endpointRule_71() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_72() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_74() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_73() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_74()));
    }

    private static Rule endpointRule_75() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_76() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_78() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_77() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_78()));
    }

    private static Rule endpointRule_79() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_80() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_82() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_81() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_82()));
    }

    private static Rule endpointRule_83() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_84() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(true))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_85() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(false))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_87() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_88() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_86() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(true))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_87(), endpointRule_88()));
    }

    private static Rule endpointRule_90() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_91() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_89() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(false))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_90(), endpointRule_91()));
    }

    private static Rule endpointRule_92() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(true))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_93() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("isIp")))
                                                        .build().validate(), Expr.of(false))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_94() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_96() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_97() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_95() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_96(), endpointRule_97()));
    }

    private static Rule endpointRule_98() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_99() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_101() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_102() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_100() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_101(), endpointRule_102()));
    }

    private static Rule endpointRule_103() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_66() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_67(), endpointRule_68(), endpointRule_69(), endpointRule_71(),
                                endpointRule_72(), endpointRule_73(), endpointRule_75(), endpointRule_76(), endpointRule_77(),
                                endpointRule_79(), endpointRule_80(), endpointRule_81(), endpointRule_83(), endpointRule_84(),
                                endpointRule_85(), endpointRule_86(), endpointRule_89(), endpointRule_92(), endpointRule_93(),
                                endpointRule_94(), endpointRule_95(), endpointRule_98(), endpointRule_99(), endpointRule_100(),
                                endpointRule_103()));
    }

    private static Rule endpointRule_104() {
        return Rule.builder().error("Invalid region: region was not a valid DNS name.");
    }

    private static Rule endpointRule_65() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_66(), endpointRule_104()));
    }

    private static Rule endpointRule_64() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("ForcePathStyle")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.isVirtualHostableS3Bucket")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_65()));
    }

    private static Rule endpointRule_108() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{Bucket}.{url#authority}{url#path}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_107() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_108()));
    }

    private static Rule endpointRule_109() {
        return Rule.builder().error("Invalid region: region was not a valid DNS name.");
    }

    private static Rule endpointRule_106() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_107(), endpointRule_109()));
    }

    private static Rule endpointRule_105() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder().fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("url")), Expr.of("scheme")))
                                                        .build().validate(), Expr.of("http"))).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.isVirtualHostableS3Bucket")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(true))).build().validate())
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("ForcePathStyle")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_106()));
    }

    private static Rule endpointRule_115() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Object Lambda does not support Dual-stack");
    }

    private static Rule endpointRule_116() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Object Lambda does not support S3 Accelerate");
    }

    private static Rule endpointRule_118() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableAccessPoints")))).build().validate())
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableAccessPoints")), Expr.of(true)))
                                        .build().validate()).build()).error("Access points are not supported for this operation");
    }

    private static Rule endpointRule_120() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion"))))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(),
                                                        Expr.of("{Region}"))).build().validate())).build().validate()).build())
                .error("Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`");
    }

    private static Rule endpointRule_125() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("accountId"))).build().validate(), Expr.of(""))).build()
                                        .validate()).build()).error("Invalid ARN: Missing account id");
    }

    private static Rule endpointRule_128() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_129() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_130() {
        return Rule
                .builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_127() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("accessPointName")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(Arrays.asList(endpointRule_128(), endpointRule_129(), endpointRule_130()));
    }

    private static Rule endpointRule_131() {
        return Rule.builder().error(
                "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`");
    }

    private static Rule endpointRule_126() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("accountId"))).build().validate(), Expr.of(false)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_127(), endpointRule_131()));
    }

    private static Rule endpointRule_132() {
        return Rule.builder().error(
                "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`");
    }

    private static Rule endpointRule_124() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("region"))).build().validate(), Expr.of(true))).build()
                                        .validate()).build())
                .treeRule(Arrays.asList(endpointRule_125(), endpointRule_126(), endpointRule_132()));
    }

    private static Rule endpointRule_133() {
        return Rule.builder().error("Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)");
    }

    private static Rule endpointRule_123() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketPartition")),
                                                                Expr.of("name"))).build().validate(),
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("partitionResult")),
                                                                Expr.of("name"))).build().validate())).build().validate())
                                .build()).treeRule(Arrays.asList(endpointRule_124(), endpointRule_133()));
    }

    private static Rule endpointRule_134() {
        return Rule.builder().error(
                "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`");
    }

    private static Rule endpointRule_122() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_123(), endpointRule_134()));
    }

    private static Rule endpointRule_121() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("aws.partition")
                                        .argv(Arrays.asList(FnNode.builder().fn("getAttr")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("region")))
                                                .build().validate())).build().validate()).result("bucketPartition").build())
                .treeRule(Arrays.asList(endpointRule_122()));
    }

    private static Rule endpointRule_119() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("isSet")
                                                .argv(Arrays.asList(FnNode
                                                        .builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("resourceId[2]"))).build().validate())).build()
                                                .validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_120(), endpointRule_121()));
    }

    private static Rule endpointRule_135() {
        return Rule.builder().error("Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.");
    }

    private static Rule endpointRule_117() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(), Expr.of("")))
                                                .build().validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_118(), endpointRule_119(), endpointRule_135()));
    }

    private static Rule endpointRule_136() {
        return Rule.builder().error("Invalid ARN: bucket ARN is missing a region");
    }

    private static Rule endpointRule_114() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[1]")))
                                        .build().validate()).result("accessPointName").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("accessPointName")), Expr.of("")))
                                                .build().validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_115(), endpointRule_116(), endpointRule_117(), endpointRule_136()));
    }

    private static Rule endpointRule_137() {
        return Rule.builder().error(
                "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided");
    }

    private static Rule endpointRule_113() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("arnType")), Expr.of("accesspoint"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_114(), endpointRule_137()));
    }

    private static Rule endpointRule_138() {
        return Rule.builder().error(
                "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`");
    }

    private static Rule endpointRule_112() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("service"))).build().validate(),
                                                Expr.of("s3-object-lambda"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_113(), endpointRule_138()));
    }

    private static Rule endpointRule_144() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableAccessPoints")))).build().validate())
                                .build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableAccessPoints")), Expr.of(true)))
                                        .build().validate()).build()).error("Access points are not supported for this operation");
    }

    private static Rule endpointRule_146() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion"))))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(),
                                                        Expr.of("{Region}"))).build().validate())).build().validate()).build())
                .error("Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`");
    }

    private static Rule endpointRule_154() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("Access Points do not support S3 Accelerate");
    }

    private static Rule endpointRule_155() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_156() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_157() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_158() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_159() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_153() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("accessPointName")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_154(), endpointRule_155(), endpointRule_156(), endpointRule_157(),
                                endpointRule_158(), endpointRule_159()));
    }

    private static Rule endpointRule_160() {
        return Rule.builder().error(
                "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`");
    }

    private static Rule endpointRule_152() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("accountId"))).build().validate(), Expr.of(false)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_153(), endpointRule_160()));
    }

    private static Rule endpointRule_161() {
        return Rule.builder().error(
                "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`");
    }

    private static Rule endpointRule_151() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("service"))).build().validate(), Expr.of("s3"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_152(), endpointRule_161()));
    }

    private static Rule endpointRule_162() {
        return Rule.builder().error("Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}");
    }

    private static Rule endpointRule_150() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("region"))).build().validate(), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_151(), endpointRule_162()));
    }

    private static Rule endpointRule_163() {
        return Rule.builder().error("Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)");
    }

    private static Rule endpointRule_149() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketPartition")),
                                                                Expr.of("name"))).build().validate(),
                                                Expr.of("{partitionResult#name}"))).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_150(), endpointRule_163()));
    }

    private static Rule endpointRule_164() {
        return Rule.builder().error(
                "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`");
    }

    private static Rule endpointRule_148() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_149(), endpointRule_164()));
    }

    private static Rule endpointRule_147() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("aws.partition")
                                        .argv(Arrays.asList(FnNode.builder().fn("getAttr")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("region")))
                                                .build().validate())).build().validate()).result("bucketPartition").build())
                .treeRule(Arrays.asList(endpointRule_148()));
    }

    private static Rule endpointRule_145() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("isSet")
                                                .argv(Arrays.asList(FnNode
                                                        .builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("resourceId[2]"))).build().validate())).build()
                                                .validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_146(), endpointRule_147()));
    }

    private static Rule endpointRule_165() {
        return Rule.builder().error("Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.");
    }

    private static Rule endpointRule_143() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(), Expr.of("")))
                                                .build().validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_144(), endpointRule_145(), endpointRule_165()));
    }

    private static Rule endpointRule_142() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("arnType")), Expr.of("accesspoint"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_143()));
    }

    private static Rule endpointRule_141() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(), Expr.of("")))
                                                .build().validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_142()));
    }

    private static Rule endpointRule_167() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 MRAP does not support dual-stack");
    }

    private static Rule endpointRule_168() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 MRAP does not support FIPS");
    }

    private static Rule endpointRule_169() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 MRAP does not support S3 Accelerate");
    }

    private static Rule endpointRule_170() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("DisableMultiRegionAccessPoints")),
                                                Expr.of(true))).build().validate()).build())
                .error("Invalid configuration: Multi-Region Access Point ARNs are disabled.");
    }

    private static Rule endpointRule_173() {
        return Rule.builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4a"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegionSet"),
                                                Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build());
    }

    private static Rule endpointRule_172() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("mrapPartition")),
                                                                Expr.of("name"))).build().validate(),
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("partition"))).build().validate())).build().validate())
                                .build()).treeRule(Arrays.asList(endpointRule_173()));
    }

    private static Rule endpointRule_174() {
        return Rule
                .builder()
                .error("Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`");
    }

    private static Rule endpointRule_171() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("mrapPartition").build())
                .treeRule(Arrays.asList(endpointRule_172(), endpointRule_174()));
    }

    private static Rule endpointRule_166() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("accessPointName")), Expr.of(true))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_167(), endpointRule_168(), endpointRule_169(), endpointRule_170(),
                                endpointRule_171()));
    }

    private static Rule endpointRule_175() {
        return Rule.builder().error("Invalid Access Point Name");
    }

    private static Rule endpointRule_140() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[1]")))
                                        .build().validate()).result("accessPointName").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("accessPointName")), Expr.of("")))
                                                .build().validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_141(), endpointRule_166(), endpointRule_175()));
    }

    private static Rule endpointRule_176() {
        return Rule.builder().error(
                "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided");
    }

    private static Rule endpointRule_139() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("arnType")), Expr.of("accesspoint"))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_140(), endpointRule_176()));
    }

    private static Rule endpointRule_178() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Outposts does not support Dual-stack");
    }

    private static Rule endpointRule_179() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Outposts does not support FIPS");
    }

    private static Rule endpointRule_180() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Outposts does not support S3 Accelerate");
    }

    private static Rule endpointRule_181() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isSet")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("getAttr")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                        Expr.of("resourceId[4]"))).build().validate())).build().validate())
                                .build()).error("Invalid Arn: Outpost Access Point ARN contains sub resources");
    }

    private static Rule endpointRule_184() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion"))))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseArnRegion")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("stringEquals")
                                                .argv(Arrays.asList(
                                                        FnNode.builder()
                                                                .fn("getAttr")
                                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                        Expr.of("region"))).build().validate(),
                                                        Expr.of("{Region}"))).build().validate())).build().validate()).build())
                .error("Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`");
    }

    private static Rule endpointRule_193() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-outposts"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_194() {
        return Rule
                .builder()
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-outposts"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{bucketArn#region}")))))).build());
    }

    private static Rule endpointRule_192() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("outpostType")), Expr.of("accesspoint")))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_193(), endpointRule_194()));
    }

    private static Rule endpointRule_195() {
        return Rule.builder().error("Expected an outpost type `accesspoint`, found {outpostType}");
    }

    private static Rule endpointRule_191() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[3]")))
                                        .build().validate()).result("accessPointName").build())
                .treeRule(Arrays.asList(endpointRule_192(), endpointRule_195()));
    }

    private static Rule endpointRule_196() {
        return Rule.builder().error("Invalid ARN: expected an access point name");
    }

    private static Rule endpointRule_190() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[2]")))
                                        .build().validate()).result("outpostType").build())
                .treeRule(Arrays.asList(endpointRule_191(), endpointRule_196()));
    }

    private static Rule endpointRule_197() {
        return Rule.builder().error("Invalid ARN: Expected a 4-component resource");
    }

    private static Rule endpointRule_189() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("accountId"))).build().validate(), Expr.of(false)))
                                        .build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_190(), endpointRule_197()));
    }

    private static Rule endpointRule_198() {
        return Rule.builder().error(
                "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`");
    }

    private static Rule endpointRule_188() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("isValidHostLabel")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("region"))).build().validate(), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_189(), endpointRule_198()));
    }

    private static Rule endpointRule_199() {
        return Rule.builder().error("Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)");
    }

    private static Rule endpointRule_187() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketPartition")),
                                                                Expr.of("name"))).build().validate(),
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("partitionResult")),
                                                                Expr.of("name"))).build().validate())).build().validate())
                                .build()).treeRule(Arrays.asList(endpointRule_188(), endpointRule_199()));
    }

    private static Rule endpointRule_200() {
        return Rule.builder().error(
                "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`");
    }

    private static Rule endpointRule_186() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_187(), endpointRule_200()));
    }

    private static Rule endpointRule_185() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("aws.partition")
                                        .argv(Arrays.asList(FnNode.builder().fn("getAttr")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("region")))
                                                .build().validate())).build().validate()).result("bucketPartition").build())
                .treeRule(Arrays.asList(endpointRule_186()));
    }

    private static Rule endpointRule_183() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("outpostId")), Expr.of(false))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_184(), endpointRule_185()));
    }

    private static Rule endpointRule_201() {
        return Rule.builder().error("Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`");
    }

    private static Rule endpointRule_182() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[1]")))
                                        .build().validate()).result("outpostId").build())
                .treeRule(Arrays.asList(endpointRule_183(), endpointRule_201()));
    }

    private static Rule endpointRule_202() {
        return Rule.builder().error("Invalid ARN: The Outpost Id was not set");
    }

    private static Rule endpointRule_177() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("stringEquals")
                                        .argv(Arrays.asList(
                                                FnNode.builder()
                                                        .fn("getAttr")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")),
                                                                Expr.of("service"))).build().validate(), Expr.of("s3-outposts")))
                                        .build().validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_178(), endpointRule_179(), endpointRule_180(), endpointRule_181(),
                                endpointRule_182(), endpointRule_202()));
    }

    private static Rule endpointRule_203() {
        return Rule.builder().error("Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})");
    }

    private static Rule endpointRule_111() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("getAttr")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("bucketArn")), Expr.of("resourceId[0]")))
                                        .build().validate()).result("arnType").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("arnType")), Expr.of(""))).build()
                                                .validate())).build().validate()).build())
                .treeRule(Arrays.asList(endpointRule_112(), endpointRule_139(), endpointRule_177(), endpointRule_203()));
    }

    private static Rule endpointRule_204() {
        return Rule.builder().error("Invalid ARN: No ARN type specified");
    }

    private static Rule endpointRule_110() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("ForcePathStyle")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).result("bucketArn").build())
                .treeRule(Arrays.asList(endpointRule_111(), endpointRule_204()));
    }

    private static Rule endpointRule_205() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("substring")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")), Expr.of(0), Expr.of(4),
                                                Expr.of(false))).build().validate()).result("arnPrefix").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("arnPrefix")), Expr.of("arn:"))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode
                                                .builder()
                                                .fn("isSet")
                                                .argv(Arrays.asList(FnNode.builder().fn("aws.parseArn")
                                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build()
                                                        .validate())).build().validate())).build().validate()).build())
                .error("Invalid ARN: `{Bucket}` was not a valid ARN");
    }

    private static Rule endpointRule_206() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("ForcePathStyle")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).build())
                .error("Path-style addressing cannot be used with ARN buckets");
    }

    private static Rule endpointRule_210() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_212() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_211() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_212()));
    }

    private static Rule endpointRule_213() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr
                                        .of("https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_214() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_216() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_215() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_216()));
    }

    private static Rule endpointRule_217() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_218() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_220() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_219() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_220()));
    }

    private static Rule endpointRule_221() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_222() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_224() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_225() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_223() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_224(), endpointRule_225()));
    }

    private static Rule endpointRule_226() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_227() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_229() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_230() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_228() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_229(), endpointRule_230()));
    }

    private static Rule endpointRule_231() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_209() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(false))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_210(), endpointRule_211(), endpointRule_213(), endpointRule_214(),
                                endpointRule_215(), endpointRule_217(), endpointRule_218(), endpointRule_219(),
                                endpointRule_221(), endpointRule_222(), endpointRule_223(), endpointRule_226(),
                                endpointRule_227(), endpointRule_228(), endpointRule_231()));
    }

    private static Rule endpointRule_232() {
        return Rule.builder().error("Path-style addressing cannot be used with S3 Accelerate");
    }

    private static Rule endpointRule_208() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_209(), endpointRule_232()));
    }

    private static Rule endpointRule_207() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("uriEncode").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket"))))
                                        .build().validate()).result("uri_encoded_bucket").build())
                .treeRule(Arrays.asList(endpointRule_208()));
    }

    private static Rule endpointRule_62() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_63(), endpointRule_64(), endpointRule_105(), endpointRule_110(),
                                endpointRule_205(), endpointRule_206(), endpointRule_207()));
    }

    private static Rule endpointRule_236() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Object Lambda does not support Dual-stack");
    }

    private static Rule endpointRule_237() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Accelerate")), Expr.of(true))).build()
                                        .validate()).build()).error("S3 Object Lambda does not support S3 Accelerate");
    }

    private static Rule endpointRule_238() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_239() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_240() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                        Literal.fromStr("s3-object-lambda"), Identifier.of("signingRegion"),
                                        Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_235() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of(true))).build().validate())
                                .build())
                .treeRule(
                        Arrays.asList(endpointRule_236(), endpointRule_237(), endpointRule_238(), endpointRule_239(),
                                endpointRule_240()));
    }

    private static Rule endpointRule_241() {
        return Rule.builder().error("Invalid region: region was not a valid DNS name.");
    }

    private static Rule endpointRule_234() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_235(), endpointRule_241()));
    }

    private static Rule endpointRule_233() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseObjectLambdaEndpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseObjectLambdaEndpoint")), Expr.of(true)))
                                        .build().validate()).build()).treeRule(Arrays.asList(endpointRule_234()));
    }

    private static Rule endpointRule_245() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_247() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_246() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_247()));
    }

    private static Rule endpointRule_248() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_249() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_251() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3-fips.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_250() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_251()));
    }

    private static Rule endpointRule_252() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3-fips.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_253() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_255() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_254() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_255()));
    }

    private static Rule endpointRule_256() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(true))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_257() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_259() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_260() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_258() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_259(), endpointRule_260()));
    }

    private static Rule endpointRule_261() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("parseURL").argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint"))))
                                        .build().validate()).result("url").build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("{url#scheme}://{url#authority}{url#path}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_262() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("us-east-1")))))).build());
    }

    private static Rule endpointRule_264() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("stringEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("us-east-1"))).build()
                                        .validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_265() {
        return Rule.builder().endpoint(
                EndpointResult
                        .builder()
                        .url(Expr.of("https://s3.{Region}.{partitionResult#dnsSuffix}"))
                        .addProperty(
                                Identifier.of("authSchemes"),
                                Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                        Identifier.of("disableDoubleEncoding"), Literal.fromBool(true), Identifier.of("name"),
                                        Literal.fromStr("sigv4"), Identifier.of("signingName"), Literal.fromStr("s3"),
                                        Identifier.of("signingRegion"), Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_263() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(true))).build()
                                        .validate()).build()).treeRule(Arrays.asList(endpointRule_264(), endpointRule_265()));
    }

    private static Rule endpointRule_266() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseFIPS")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseDualStack")), Expr.of(false))).build()
                                        .validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Endpoint")))).build().validate()))
                                        .build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("stringEquals")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of("aws-global")))
                                                .build().validate())).build().validate()).build())
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("booleanEquals")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("UseGlobalEndpoint")), Expr.of(false)))
                                        .build().validate()).build())
                .endpoint(
                        EndpointResult
                                .builder()
                                .url(Expr.of("https://s3.{Region}.{partitionResult#dnsSuffix}"))
                                .addProperty(
                                        Identifier.of("authSchemes"),
                                        Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(
                                                Identifier.of("disableDoubleEncoding"), Literal.fromBool(true),
                                                Identifier.of("name"), Literal.fromStr("sigv4"), Identifier.of("signingName"),
                                                Literal.fromStr("s3"), Identifier.of("signingRegion"),
                                                Literal.fromStr("{Region}")))))).build());
    }

    private static Rule endpointRule_244() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isValidHostLabel")
                                        .argv(Arrays.asList(Expr.ref(Identifier.of("Region")), Expr.of(true))).build().validate())
                                .build())
                .treeRule(
                        Arrays.asList(endpointRule_245(), endpointRule_246(), endpointRule_248(), endpointRule_249(),
                                endpointRule_250(), endpointRule_252(), endpointRule_253(), endpointRule_254(),
                                endpointRule_256(), endpointRule_257(), endpointRule_258(), endpointRule_261(),
                                endpointRule_262(), endpointRule_263(), endpointRule_266()));
    }

    private static Rule endpointRule_267() {
        return Rule.builder().error("Invalid region: region was not a valid DNS name.");
    }

    private static Rule endpointRule_243() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("Region"))))
                                        .build().validate()).result("partitionResult").build())
                .treeRule(Arrays.asList(endpointRule_244(), endpointRule_267()));
    }

    private static Rule endpointRule_242() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode
                                        .builder()
                                        .fn("not")
                                        .argv(Arrays.asList(FnNode.builder().fn("isSet")
                                                .argv(Arrays.asList(Expr.ref(Identifier.of("Bucket")))).build().validate()))
                                        .build().validate()).build()).treeRule(Arrays.asList(endpointRule_243()));
    }

    private static Rule endpointRule_0() {
        return Rule
                .builder()
                .addCondition(
                        Condition
                                .builder()
                                .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("Region")))).build()
                                        .validate()).build())
                .treeRule(
                        Arrays.asList(endpointRule_1(), endpointRule_2(), endpointRule_3(), endpointRule_4(), endpointRule_5(),
                                endpointRule_6(), endpointRule_44(), endpointRule_48(), endpointRule_62(), endpointRule_233(),
                                endpointRule_242()));
    }

    private static Rule endpointRule_268() {
        return Rule.builder().error("A region must be set when sending requests to S3.");
    }

    private static EndpointRuleset ruleSet() {
        return EndpointRuleset
                .builder()
                .version("1.0")
                .serviceId(null)
                .parameters(
                        Parameters
                                .builder()
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("Bucket")
                                                .type(ParameterType.fromValue("String"))
                                                .required(false)
                                                .documentation(
                                                        "The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.")
                                                .build())
                                .addParameter(
                                        Parameter.builder().name("Region").type(ParameterType.fromValue("String"))
                                                .required(false).builtIn("AWS::Region")
                                                .documentation("The AWS region used to dispatch the request.").build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseFIPS")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(true)
                                                .builtIn("AWS::UseFIPS")
                                                .documentation(
                                                        "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseDualStack")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(true)
                                                .builtIn("AWS::UseDualStack")
                                                .documentation(
                                                        "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter.builder().name("Endpoint").type(ParameterType.fromValue("String"))
                                                .required(false).builtIn("SDK::Endpoint")
                                                .documentation("Override the endpoint used to send this request").build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("ForcePathStyle")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(true)
                                                .builtIn("AWS::S3::ForcePathStyle")
                                                .documentation(
                                                        "When true, force a path-style endpoint to be used where the bucket name is part of the path.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("Accelerate")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(true)
                                                .builtIn("AWS::S3::Accelerate")
                                                .documentation(
                                                        "When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseGlobalEndpoint")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(true)
                                                .builtIn("AWS::S3::UseGlobalEndpoint")
                                                .documentation(
                                                        "Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseObjectLambdaEndpoint")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(false)
                                                .documentation(
                                                        "Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)")
                                                .build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("Key")
                                                .type(ParameterType.fromValue("String"))
                                                .required(false)
                                                .documentation(
                                                        "The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.")
                                                .build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("Prefix")
                                                .type(ParameterType.fromValue("String"))
                                                .required(false)
                                                .documentation(
                                                        "The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.")
                                                .build())
                                .addParameter(
                                        Parameter.builder().name("DisableAccessPoints").type(ParameterType.fromValue("Boolean"))
                                                .required(false)
                                                .documentation("Internal parameter to disable Access Point Buckets").build())
                                .addParameter(
                                        Parameter.builder().name("DisableMultiRegionAccessPoints")
                                                .type(ParameterType.fromValue("Boolean")).required(true)
                                                .builtIn("AWS::S3::DisableMultiRegionAccessPoints")
                                                .documentation("Whether multi-region access points (MRAP) should be disabled.")
                                                .defaultValue(Value.fromBool(false)).build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseArnRegion")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(false)
                                                .builtIn("AWS::S3::UseArnRegion")
                                                .documentation(
                                                        "When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.")
                                                .build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("UseS3ExpressControlEndpoint")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(false)
                                                .documentation(
                                                        "Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)")
                                                .build())
                                .addParameter(
                                        Parameter
                                                .builder()
                                                .name("DisableS3ExpressSessionAuth")
                                                .type(ParameterType.fromValue("Boolean"))
                                                .required(false)
                                                .documentation(
                                                        "Parameter to indicate whether S3Express session auth should be disabled")
                                                .build()).build()).addRule(endpointRule_0()).addRule(endpointRule_268()).build();
    }

    @Override
    public boolean equals(Object rhs) {
        return rhs != null && getClass().equals(rhs.getClass());
    }

    @Override
    public int hashCode() {
        return getClass().hashCode();
    }

    private  void addKnownProperty(EndpointAttributeProvider provider, Endpoint.Builder builder, Value value) {
        builder.putAttribute(provider.attributeKey(), provider.attributeValue(value));
    }

    private void addKnownProperties(Endpoint.Builder builder, Map properties) {
        List> knownProperties = software.amazon.awssdk.services.s3.endpoints.internal.KnownS3ExpressEndpointProperty.KNOWN_S3_ENDPOINT_PROPERTIES;
        for (EndpointAttributeProvider p : knownProperties) {
            if (properties.containsKey(p.propertyName())) {
                addKnownProperty(p, builder, properties.get(p.propertyName()));
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy