{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "definitions": {
        "ExtensionsConfig": {
            "additionalProperties": false,
            "type": "object"
        }
    },
    "properties": {
        "database": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "properties": {
                        "postdeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "predeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "rules": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "rules"
                    ],
                    "type": "object"
                },
                {
                    "items": {
                        "anyOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "instance": {
                                        "type": "string"
                                    },
                                    "postdeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "predeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "rules": {
                                        "type": "string"
                                    },
                                    "target": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "instance",
                                    "rules"
                                ],
                                "type": "object"
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "instance": {
                                        "type": "string"
                                    },
                                    "postdeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "predeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "rules": {
                                        "type": "string"
                                    },
                                    "target": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "rules",
                                    "target"
                                ],
                                "type": "object"
                            }
                        ]
                    },
                    "type": "array"
                }
            ]
        },
        "emulators": {
            "additionalProperties": false,
            "properties": {
                "auth": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "database": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "firestore": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "functions": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "hosting": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "hub": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "logging": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "pubsub": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "storage": {
                    "additionalProperties": false,
                    "properties": {
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": "number"
                        }
                    },
                    "type": "object"
                },
                "ui": {
                    "additionalProperties": false,
                    "properties": {
                        "enabled": {
                            "type": "boolean"
                        },
                        "host": {
                            "type": "string"
                        },
                        "port": {
                            "type": [
                                "string",
                                "number"
                            ]
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "extensions": {
            "$ref": "#/definitions/ExtensionsConfig"
        },
        "firestore": {
            "additionalProperties": false,
            "properties": {
                "indexes": {
                    "type": "string"
                },
                "postdeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "predeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "rules": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "functions": {
            "additionalProperties": false,
            "properties": {
                "ignore": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "postdeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "predeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "runtime": {
                    "enum": [
                        "nodejs10",
                        "nodejs12",
                        "nodejs14",
                        "nodejs16"
                    ],
                    "type": "string"
                },
                "source": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "hosting": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "properties": {
                        "appAssociation": {
                            "type": "string"
                        },
                        "cleanUrls": {
                            "type": "boolean"
                        },
                        "headers": {
                            "items": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "headers": {
                                                "items": {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "key": {
                                                            "type": "string"
                                                        },
                                                        "value": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "key",
                                                        "value"
                                                    ],
                                                    "type": "object"
                                                },
                                                "type": "array"
                                            },
                                            "source": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "headers",
                                            "source"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "headers": {
                                                "items": {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "key": {
                                                            "type": "string"
                                                        },
                                                        "value": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "key",
                                                        "value"
                                                    ],
                                                    "type": "object"
                                                },
                                                "type": "array"
                                            },
                                            "regex": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "headers",
                                            "regex"
                                        ],
                                        "type": "object"
                                    }
                                ]
                            },
                            "type": "array"
                        },
                        "i18n": {
                            "additionalProperties": false,
                            "properties": {
                                "root": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "root"
                            ],
                            "type": "object"
                        },
                        "ignore": {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        "postdeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "predeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "public": {
                            "type": "string"
                        },
                        "redirects": {
                            "items": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "destination": {
                                                "type": "string"
                                            },
                                            "source": {
                                                "type": "string"
                                            },
                                            "type": {
                                                "type": "number"
                                            }
                                        },
                                        "required": [
                                            "destination",
                                            "source",
                                            "type"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "destination": {
                                                "type": "string"
                                            },
                                            "regex": {
                                                "type": "string"
                                            },
                                            "type": {
                                                "type": "number"
                                            }
                                        },
                                        "required": [
                                            "destination",
                                            "regex",
                                            "type"
                                        ],
                                        "type": "object"
                                    }
                                ]
                            },
                            "type": "array"
                        },
                        "rewrites": {
                            "items": {
                                "anyOf": [
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "destination": {
                                                "type": "string"
                                            },
                                            "source": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "destination",
                                            "source"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "function": {
                                                "type": "string"
                                            },
                                            "source": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "function",
                                            "source"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "run": {
                                                "additionalProperties": false,
                                                "properties": {
                                                    "region": {
                                                        "type": "string"
                                                    },
                                                    "serviceId": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "serviceId"
                                                ],
                                                "type": "object"
                                            },
                                            "source": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "run",
                                            "source"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "dynamicLinks": {
                                                "type": "boolean"
                                            },
                                            "source": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "dynamicLinks",
                                            "source"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "destination": {
                                                "type": "string"
                                            },
                                            "regex": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "destination",
                                            "regex"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "function": {
                                                "type": "string"
                                            },
                                            "regex": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "function",
                                            "regex"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "regex": {
                                                "type": "string"
                                            },
                                            "run": {
                                                "additionalProperties": false,
                                                "properties": {
                                                    "region": {
                                                        "type": "string"
                                                    },
                                                    "serviceId": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "serviceId"
                                                ],
                                                "type": "object"
                                            }
                                        },
                                        "required": [
                                            "regex",
                                            "run"
                                        ],
                                        "type": "object"
                                    },
                                    {
                                        "additionalProperties": false,
                                        "properties": {
                                            "dynamicLinks": {
                                                "type": "boolean"
                                            },
                                            "regex": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "dynamicLinks",
                                            "regex"
                                        ],
                                        "type": "object"
                                    }
                                ]
                            },
                            "type": "array"
                        },
                        "site": {
                            "type": "string"
                        },
                        "target": {
                            "type": "string"
                        },
                        "trailingSlash": {
                            "type": "boolean"
                        }
                    },
                    "type": "object"
                },
                {
                    "items": {
                        "anyOf": [
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "appAssociation": {
                                        "type": "string"
                                    },
                                    "cleanUrls": {
                                        "type": "boolean"
                                    },
                                    "headers": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "headers": {
                                                            "items": {
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "key": {
                                                                        "type": "string"
                                                                    },
                                                                    "value": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "key",
                                                                    "value"
                                                                ],
                                                                "type": "object"
                                                            },
                                                            "type": "array"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "headers",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "headers": {
                                                            "items": {
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "key": {
                                                                        "type": "string"
                                                                    },
                                                                    "value": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "key",
                                                                    "value"
                                                                ],
                                                                "type": "object"
                                                            },
                                                            "type": "array"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "headers",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "i18n": {
                                        "additionalProperties": false,
                                        "properties": {
                                            "root": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "root"
                                        ],
                                        "type": "object"
                                    },
                                    "ignore": {
                                        "items": {
                                            "type": "string"
                                        },
                                        "type": "array"
                                    },
                                    "postdeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "predeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "public": {
                                        "type": "string"
                                    },
                                    "redirects": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "type": "number"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "source",
                                                        "type"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "type": "number"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "regex",
                                                        "type"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "rewrites": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "function": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "function",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "run": {
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "region": {
                                                                    "type": "string"
                                                                },
                                                                "serviceId": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "serviceId"
                                                            ],
                                                            "type": "object"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "run",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "dynamicLinks": {
                                                            "type": "boolean"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "dynamicLinks",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "function": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "function",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "regex": {
                                                            "type": "string"
                                                        },
                                                        "run": {
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "region": {
                                                                    "type": "string"
                                                                },
                                                                "serviceId": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "serviceId"
                                                            ],
                                                            "type": "object"
                                                        }
                                                    },
                                                    "required": [
                                                        "regex",
                                                        "run"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "dynamicLinks": {
                                                            "type": "boolean"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "dynamicLinks",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "site": {
                                        "type": "string"
                                    },
                                    "target": {
                                        "type": "string"
                                    },
                                    "trailingSlash": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "target"
                                ],
                                "type": "object"
                            },
                            {
                                "additionalProperties": false,
                                "properties": {
                                    "appAssociation": {
                                        "type": "string"
                                    },
                                    "cleanUrls": {
                                        "type": "boolean"
                                    },
                                    "headers": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "headers": {
                                                            "items": {
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "key": {
                                                                        "type": "string"
                                                                    },
                                                                    "value": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "key",
                                                                    "value"
                                                                ],
                                                                "type": "object"
                                                            },
                                                            "type": "array"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "headers",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "headers": {
                                                            "items": {
                                                                "additionalProperties": false,
                                                                "properties": {
                                                                    "key": {
                                                                        "type": "string"
                                                                    },
                                                                    "value": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "key",
                                                                    "value"
                                                                ],
                                                                "type": "object"
                                                            },
                                                            "type": "array"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "headers",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "i18n": {
                                        "additionalProperties": false,
                                        "properties": {
                                            "root": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "root"
                                        ],
                                        "type": "object"
                                    },
                                    "ignore": {
                                        "items": {
                                            "type": "string"
                                        },
                                        "type": "array"
                                    },
                                    "postdeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "predeploy": {
                                        "anyOf": [
                                            {
                                                "items": {
                                                    "type": "string"
                                                },
                                                "type": "array"
                                            },
                                            {
                                                "type": "string"
                                            }
                                        ]
                                    },
                                    "public": {
                                        "type": "string"
                                    },
                                    "redirects": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "type": "number"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "source",
                                                        "type"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "type": "number"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "regex",
                                                        "type"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "rewrites": {
                                        "items": {
                                            "anyOf": [
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "function": {
                                                            "type": "string"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "function",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "run": {
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "region": {
                                                                    "type": "string"
                                                                },
                                                                "serviceId": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "serviceId"
                                                            ],
                                                            "type": "object"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "run",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "dynamicLinks": {
                                                            "type": "boolean"
                                                        },
                                                        "source": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "dynamicLinks",
                                                        "source"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "destination": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "destination",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "function": {
                                                            "type": "string"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "function",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "regex": {
                                                            "type": "string"
                                                        },
                                                        "run": {
                                                            "additionalProperties": false,
                                                            "properties": {
                                                                "region": {
                                                                    "type": "string"
                                                                },
                                                                "serviceId": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "serviceId"
                                                            ],
                                                            "type": "object"
                                                        }
                                                    },
                                                    "required": [
                                                        "regex",
                                                        "run"
                                                    ],
                                                    "type": "object"
                                                },
                                                {
                                                    "additionalProperties": false,
                                                    "properties": {
                                                        "dynamicLinks": {
                                                            "type": "boolean"
                                                        },
                                                        "regex": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "dynamicLinks",
                                                        "regex"
                                                    ],
                                                    "type": "object"
                                                }
                                            ]
                                        },
                                        "type": "array"
                                    },
                                    "site": {
                                        "type": "string"
                                    },
                                    "target": {
                                        "type": "string"
                                    },
                                    "trailingSlash": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "site"
                                ],
                                "type": "object"
                            }
                        ]
                    },
                    "type": "array"
                }
            ]
        },
        "remoteconfig": {
            "additionalProperties": false,
            "properties": {
                "postdeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "predeploy": {
                    "anyOf": [
                        {
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "template": {
                    "type": "string"
                }
            },
            "required": [
                "template"
            ],
            "type": "object"
        },
        "storage": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "properties": {
                        "postdeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "predeploy": {
                            "anyOf": [
                                {
                                    "items": {
                                        "type": "string"
                                    },
                                    "type": "array"
                                },
                                {
                                    "type": "string"
                                }
                            ]
                        },
                        "rules": {
                            "type": "string"
                        },
                        "target": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "rules"
                    ],
                    "type": "object"
                },
                {
                    "items": {
                        "additionalProperties": false,
                        "properties": {
                            "bucket": {
                                "type": "string"
                            },
                            "postdeploy": {
                                "anyOf": [
                                    {
                                        "items": {
                                            "type": "string"
                                        },
                                        "type": "array"
                                    },
                                    {
                                        "type": "string"
                                    }
                                ]
                            },
                            "predeploy": {
                                "anyOf": [
                                    {
                                        "items": {
                                            "type": "string"
                                        },
                                        "type": "array"
                                    },
                                    {
                                        "type": "string"
                                    }
                                ]
                            },
                            "rules": {
                                "type": "string"
                            },
                            "target": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "bucket",
                            "rules"
                        ],
                        "type": "object"
                    },
                    "type": "array"
                }
            ]
        }
    },
    "type": "object"
}

