https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
};
enum class Availability {
    NO,
    YES,
    MAYBE,
};
namespace internal {
Type ComputeType(Fragment fragment, Type x, Type y, Type z, const std::vector<Type>& sub_types, uint32_t k, size_t data_size, size_t n_subs, size_t n_keys);
size_t ComputeScriptLen(Fragment fragment, Type sub0typ, size_t subsize, uint32_t k, size_t n_subs, size_t n_keys);
Type SanitizeType(Type x);
struct InputStack {
    /** Whether this stack is valid for its intended purpose (satisfaction or dissatisfaction of a Node).
     *  The MAYBE value is used for size estimation, when keys/preimages may actually be unavailable,
     *  but may be available at signing time. This makes the InputStack structure and signing logic,
     *  filled with dummy signatures/preimages usable for witness size estimation.
     */
    Availability available = Availability::YES;
    
    bool has_sig = false;
    
    bool malleable = false;
    
    
    bool non_canon = false;
    
    size_t size = 0;
    
    std::vector<std::vector<unsigned char>> stack;
    
    InputStack() {}