// Copyright 2021 The Tint Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License 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.

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/intrinsic-gen
// using the template:
//   src/intrinsic_table.inl.tmpl
// and the intrinsic defintion file:
//   src/intrinsics.def
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

// clang-format off

/// TypeMatcher for 'type bool'
/// @see src/intrinsics.def:68:6
class Bool : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Bool::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_bool(ty)) {
    return nullptr;
  }
  return build_bool(state);
}

std::string Bool::String(MatchState&) const {
  return "bool";
}

/// TypeMatcher for 'type f32'
/// @see src/intrinsics.def:69:6
class F32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* F32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_f32(ty)) {
    return nullptr;
  }
  return build_f32(state);
}

std::string F32::String(MatchState&) const {
  return "f32";
}

/// TypeMatcher for 'type i32'
/// @see src/intrinsics.def:70:6
class I32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* I32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_i32(ty)) {
    return nullptr;
  }
  return build_i32(state);
}

std::string I32::String(MatchState&) const {
  return "i32";
}

/// TypeMatcher for 'type u32'
/// @see src/intrinsics.def:71:6
class U32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* U32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_u32(ty)) {
    return nullptr;
  }
  return build_u32(state);
}

std::string U32::String(MatchState&) const {
  return "u32";
}

/// TypeMatcher for 'type vec2'
/// @see src/intrinsics.def:72:6
class Vec2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec2(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec2(state, T);
}

std::string Vec2::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec2<" + T + ">";
}

/// TypeMatcher for 'type vec3'
/// @see src/intrinsics.def:73:6
class Vec3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec3(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec3(state, T);
}

std::string Vec3::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec3<" + T + ">";
}

/// TypeMatcher for 'type vec4'
/// @see src/intrinsics.def:74:6
class Vec4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec4(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec4(state, T);
}

std::string Vec4::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec4<" + T + ">";
}

/// TypeMatcher for 'type vec'
/// @see src/intrinsics.def:75:37
class Vec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_vec(ty, N, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec(state, N, T);
}

std::string Vec::String(MatchState& state) const {
  const std::string N = state.NumName();
  const std::string T = state.TypeName();
  std::stringstream ss;
  ss << "vec" << N << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type mat'
/// @see src/intrinsics.def:76:37
class Mat : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Mat::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  Number M = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_mat(ty, N, M, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  M = state.Num(M);
  if (!M.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat(state, N, M, T);
}

std::string Mat::String(MatchState& state) const {
  const std::string N = state.NumName();
  const std::string M = state.NumName();
  const std::string T = state.TypeName();
  std::stringstream ss;
  ss << "mat" << N << "x" << M << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type ptr'
/// @see src/intrinsics.def:77:6
class Ptr : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Ptr::Match(MatchState& state, const sem::Type* ty) const {
  Number S = Number::invalid;
  const sem::Type* T = nullptr;
  Number A = Number::invalid;
  if (!match_ptr(ty, S, T, A)) {
    return nullptr;
  }
  S = state.Num(S);
  if (!S.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_ptr(state, S, T, A);
}

std::string Ptr::String(MatchState& state) const {
  const std::string S = state.NumName();
  const std::string T = state.TypeName();
  const std::string A = state.NumName();
  return "ptr<" + S + ", " + T + ", " + A + ">";
}

/// TypeMatcher for 'type atomic'
/// @see src/intrinsics.def:78:6
class Atomic : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Atomic::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_atomic(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_atomic(state, T);
}

std::string Atomic::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "atomic<" + T + ">";
}

/// TypeMatcher for 'type array'
/// @see src/intrinsics.def:79:6
class Array : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Array::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_array(state, T);
}

std::string Array::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "array<" + T + ">";
}

/// TypeMatcher for 'type sampler'
/// @see src/intrinsics.def:80:6
class Sampler : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Sampler::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler(ty)) {
    return nullptr;
  }
  return build_sampler(state);
}

std::string Sampler::String(MatchState&) const {
  return "sampler";
}

/// TypeMatcher for 'type sampler_comparison'
/// @see src/intrinsics.def:81:6
class SamplerComparison : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* SamplerComparison::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler_comparison(ty)) {
    return nullptr;
  }
  return build_sampler_comparison(state);
}

std::string SamplerComparison::String(MatchState&) const {
  return "sampler_comparison";
}

/// TypeMatcher for 'type texture_1d'
/// @see src/intrinsics.def:82:6
class Texture1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture1D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_1d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_1d(state, T);
}

std::string Texture1D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_1d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d'
/// @see src/intrinsics.def:83:6
class Texture2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d(state, T);
}

std::string Texture2D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d_array'
/// @see src/intrinsics.def:84:6
class Texture2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture2DArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d_array(state, T);
}

std::string Texture2DArray::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_2d_array<" + T + ">";
}

/// TypeMatcher for 'type texture_3d'
/// @see src/intrinsics.def:85:6
class Texture3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture3D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_3d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_3d(state, T);
}

std::string Texture3D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_3d<" + T + ">";
}

/// TypeMatcher for 'type texture_cube'
/// @see src/intrinsics.def:86:6
class TextureCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureCube::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube(state, T);
}

std::string TextureCube::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_cube<" + T + ">";
}

/// TypeMatcher for 'type texture_cube_array'
/// @see src/intrinsics.def:87:6
class TextureCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube_array(state, T);
}

std::string TextureCubeArray::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_cube_array<" + T + ">";
}

/// TypeMatcher for 'type texture_multisampled_2d'
/// @see src/intrinsics.def:88:6
class TextureMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureMultisampled2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_multisampled_2d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_multisampled_2d(state, T);
}

std::string TextureMultisampled2D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_multisampled_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_depth_2d'
/// @see src/intrinsics.def:89:6
class TextureDepth2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepth2D::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d(ty)) {
    return nullptr;
  }
  return build_texture_depth_2d(state);
}

std::string TextureDepth2D::String(MatchState&) const {
  return "texture_depth_2d";
}

/// TypeMatcher for 'type texture_depth_2d_array'
/// @see src/intrinsics.def:90:6
class TextureDepth2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepth2DArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d_array(ty)) {
    return nullptr;
  }
  return build_texture_depth_2d_array(state);
}

std::string TextureDepth2DArray::String(MatchState&) const {
  return "texture_depth_2d_array";
}

/// TypeMatcher for 'type texture_depth_cube'
/// @see src/intrinsics.def:91:6
class TextureDepthCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepthCube::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube(ty)) {
    return nullptr;
  }
  return build_texture_depth_cube(state);
}

std::string TextureDepthCube::String(MatchState&) const {
  return "texture_depth_cube";
}

/// TypeMatcher for 'type texture_depth_cube_array'
/// @see src/intrinsics.def:92:6
class TextureDepthCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepthCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube_array(ty)) {
    return nullptr;
  }
  return build_texture_depth_cube_array(state);
}

std::string TextureDepthCubeArray::String(MatchState&) const {
  return "texture_depth_cube_array";
}

/// TypeMatcher for 'type texture_depth_multisampled_2d'
/// @see src/intrinsics.def:93:6
class TextureDepthMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepthMultisampled2D::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_multisampled_2d(ty)) {
    return nullptr;
  }
  return build_texture_depth_multisampled_2d(state);
}

std::string TextureDepthMultisampled2D::String(MatchState&) const {
  return "texture_depth_multisampled_2d";
}

/// TypeMatcher for 'type texture_storage_1d'
/// @see src/intrinsics.def:94:6
class TextureStorage1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage1D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_1d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_1d(state, F, A);
}

std::string TextureStorage1D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_1d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d'
/// @see src/intrinsics.def:95:6
class TextureStorage2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage2D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d(state, F, A);
}

std::string TextureStorage2D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_2d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d_array'
/// @see src/intrinsics.def:96:6
class TextureStorage2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage2DArray::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d_array(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d_array(state, F, A);
}

std::string TextureStorage2DArray::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_2d_array<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_3d'
/// @see src/intrinsics.def:97:6
class TextureStorage3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage3D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_3d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_3d(state, F, A);
}

std::string TextureStorage3D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_3d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_external'
/// @see src/intrinsics.def:98:6
class TextureExternal : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureExternal::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_external(ty)) {
    return nullptr;
  }
  return build_texture_external(state);
}

std::string TextureExternal::String(MatchState&) const {
  return "texture_external";
}

/// TypeMatcher for 'type _modf_result'
/// @see src/intrinsics.def:100:6
class ModfResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* ModfResult::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_modf_result(ty)) {
    return nullptr;
  }
  return build_modf_result(state);
}

std::string ModfResult::String(MatchState&) const {
  return "_modf_result";
}

/// TypeMatcher for 'type _modf_result_vec'
/// @see src/intrinsics.def:101:41
class ModfResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* ModfResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  if (!match_modf_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_modf_result_vec(state, N);
}

std::string ModfResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_modf_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'type _frexp_result'
/// @see src/intrinsics.def:102:6
class FrexpResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* FrexpResult::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_frexp_result(ty)) {
    return nullptr;
  }
  return build_frexp_result(state);
}

std::string FrexpResult::String(MatchState&) const {
  return "_frexp_result";
}

/// TypeMatcher for 'type _frexp_result_vec'
/// @see src/intrinsics.def:103:42
class FrexpResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* FrexpResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  if (!match_frexp_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_frexp_result_vec(state, N);
}

std::string FrexpResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_frexp_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'match fiu32'
/// @see src/intrinsics.def:111:7
class Fiu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Fiu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Fiu32::String(MatchState&) const {
  return "f32, i32 or u32";
}

/// TypeMatcher for 'match iu32'
/// @see src/intrinsics.def:112:7
class Iu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Iu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Iu32::String(MatchState&) const {
  return "i32 or u32";
}

/// TypeMatcher for 'match scalar'
/// @see src/intrinsics.def:113:7
class Scalar : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Scalar::Match(MatchState& state, const sem::Type* ty) const {
  if (match_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  if (match_bool(ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string Scalar::String(MatchState&) const {
  return "f32, i32, u32 or bool";
}

/// EnumMatcher for 'match f32_texel_format'
/// @see src/intrinsics.def:124:7
class F32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number F32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Unorm:
    case TexelFormat::kRgba8Snorm:
    case TexelFormat::kRgba16Float:
    case TexelFormat::kR32Float:
    case TexelFormat::kRg32Float:
    case TexelFormat::kRgba32Float:
      return number;
    default:
      return Number::invalid;
  }
}

std::string F32TexelFormat::String(MatchState&) const {
  return "rgba8unorm, rgba8snorm, rgba16float, r32float, rg32float or rgba32float";
}

/// EnumMatcher for 'match i32_texel_format'
/// @see src/intrinsics.def:126:7
class I32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number I32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Sint:
    case TexelFormat::kRgba16Sint:
    case TexelFormat::kR32Sint:
    case TexelFormat::kRg32Sint:
    case TexelFormat::kRgba32Sint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string I32TexelFormat::String(MatchState&) const {
  return "rgba8sint, rgba16sint, r32sint, rg32sint or rgba32sint";
}

/// EnumMatcher for 'match u32_texel_format'
/// @see src/intrinsics.def:128:7
class U32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number U32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Uint:
    case TexelFormat::kRgba16Uint:
    case TexelFormat::kR32Uint:
    case TexelFormat::kRg32Uint:
    case TexelFormat::kRgba32Uint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string U32TexelFormat::String(MatchState&) const {
  return "rgba8uint, rgba16uint, r32uint, rg32uint or rgba32uint";
}

/// EnumMatcher for 'match read_or_write'
/// @see src/intrinsics.def:131:7
class ReadOrWrite : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number ReadOrWrite::Match(MatchState&, Number number) const {
  switch (static_cast<Access>(number.Value())) {
    case Access::kRead:
    case Access::kWrite:
      return number;
    default:
      return Number::invalid;
  }
}

std::string ReadOrWrite::String(MatchState&) const {
  return "read or write";
}

/// EnumMatcher for 'match function_private_workgroup'
/// @see src/intrinsics.def:133:7
class FunctionPrivateWorkgroup : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number FunctionPrivateWorkgroup::Match(MatchState&, Number number) const {
  switch (static_cast<StorageClass>(number.Value())) {
    case StorageClass::kFunction:
    case StorageClass::kPrivate:
    case StorageClass::kWorkgroup:
      return number;
    default:
      return Number::invalid;
  }
}

std::string FunctionPrivateWorkgroup::String(MatchState&) const {
  return "function, private or workgroup";
}

/// EnumMatcher for 'match workgroup_or_storage'
/// @see src/intrinsics.def:134:7
class WorkgroupOrStorage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number WorkgroupOrStorage::Match(MatchState&, Number number) const {
  switch (static_cast<StorageClass>(number.Value())) {
    case StorageClass::kWorkgroup:
    case StorageClass::kStorage:
      return number;
    default:
      return Number::invalid;
  }
}

std::string WorkgroupOrStorage::String(MatchState&) const {
  return "workgroup or storage";
}

/// EnumMatcher for 'match storage'
class Storage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Storage::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(StorageClass::kStorage)) {
    return Number(static_cast<uint32_t>(StorageClass::kStorage));
  }
  return Number::invalid;
}

std::string Storage::String(MatchState&) const {
  return "storage";
}

/// EnumMatcher for 'match write'
class Write : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Write::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kWrite)) {
    return Number(static_cast<uint32_t>(Access::kWrite));
  }
  return Number::invalid;
}

std::string Write::String(MatchState&) const {
  return "write";
}

/// EnumMatcher for 'match read'
class Read : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Read::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kRead)) {
    return Number(static_cast<uint32_t>(Access::kRead));
  }
  return Number::invalid;
}

std::string Read::String(MatchState&) const {
  return "read";
}

/// EnumMatcher for 'match read_write'
class ReadWrite : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number ReadWrite::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kReadWrite)) {
    return Number(static_cast<uint32_t>(Access::kReadWrite));
  }
  return Number::invalid;
}

std::string ReadWrite::String(MatchState&) const {
  return "read_write";
}

/// Matchers holds type and number matchers
class Matchers {
 private:
  OpenTypeMatcher open_type_0_{0};
  OpenNumberMatcher open_number_0_{0};
  OpenNumberMatcher open_number_1_{1};
  OpenNumberMatcher open_number_2_{2};
  Bool Bool_;
  F32 F32_;
  I32 I32_;
  U32 U32_;
  Vec2 Vec2_;
  Vec3 Vec3_;
  Vec4 Vec4_;
  Vec Vec_;
  Mat Mat_;
  Ptr Ptr_;
  Atomic Atomic_;
  Array Array_;
  Sampler Sampler_;
  SamplerComparison SamplerComparison_;
  Texture1D Texture1D_;
  Texture2D Texture2D_;
  Texture2DArray Texture2DArray_;
  Texture3D Texture3D_;
  TextureCube TextureCube_;
  TextureCubeArray TextureCubeArray_;
  TextureMultisampled2D TextureMultisampled2D_;
  TextureDepth2D TextureDepth2D_;
  TextureDepth2DArray TextureDepth2DArray_;
  TextureDepthCube TextureDepthCube_;
  TextureDepthCubeArray TextureDepthCubeArray_;
  TextureDepthMultisampled2D TextureDepthMultisampled2D_;
  TextureStorage1D TextureStorage1D_;
  TextureStorage2D TextureStorage2D_;
  TextureStorage2DArray TextureStorage2DArray_;
  TextureStorage3D TextureStorage3D_;
  TextureExternal TextureExternal_;
  ModfResult ModfResult_;
  ModfResultVec ModfResultVec_;
  FrexpResult FrexpResult_;
  FrexpResultVec FrexpResultVec_;
  Fiu32 Fiu32_;
  Iu32 Iu32_;
  Scalar Scalar_;
  F32TexelFormat F32TexelFormat_;
  I32TexelFormat I32TexelFormat_;
  U32TexelFormat U32TexelFormat_;
  ReadOrWrite ReadOrWrite_;
  FunctionPrivateWorkgroup FunctionPrivateWorkgroup_;
  WorkgroupOrStorage WorkgroupOrStorage_;
  Storage Storage_;
  Write Write_;
  Read Read_;
  ReadWrite ReadWrite_;

 public:
  /// Constructor
  Matchers();
  /// Destructor
  ~Matchers();

  /// The open-types, types, and type matchers
  TypeMatcher const* const type[39] = {
    /* [0] */ &open_type_0_,
    /* [1] */ &Bool_,
    /* [2] */ &F32_,
    /* [3] */ &I32_,
    /* [4] */ &U32_,
    /* [5] */ &Vec2_,
    /* [6] */ &Vec3_,
    /* [7] */ &Vec4_,
    /* [8] */ &Vec_,
    /* [9] */ &Mat_,
    /* [10] */ &Ptr_,
    /* [11] */ &Atomic_,
    /* [12] */ &Array_,
    /* [13] */ &Sampler_,
    /* [14] */ &SamplerComparison_,
    /* [15] */ &Texture1D_,
    /* [16] */ &Texture2D_,
    /* [17] */ &Texture2DArray_,
    /* [18] */ &Texture3D_,
    /* [19] */ &TextureCube_,
    /* [20] */ &TextureCubeArray_,
    /* [21] */ &TextureMultisampled2D_,
    /* [22] */ &TextureDepth2D_,
    /* [23] */ &TextureDepth2DArray_,
    /* [24] */ &TextureDepthCube_,
    /* [25] */ &TextureDepthCubeArray_,
    /* [26] */ &TextureDepthMultisampled2D_,
    /* [27] */ &TextureStorage1D_,
    /* [28] */ &TextureStorage2D_,
    /* [29] */ &TextureStorage2DArray_,
    /* [30] */ &TextureStorage3D_,
    /* [31] */ &TextureExternal_,
    /* [32] */ &ModfResult_,
    /* [33] */ &ModfResultVec_,
    /* [34] */ &FrexpResult_,
    /* [35] */ &FrexpResultVec_,
    /* [36] */ &Fiu32_,
    /* [37] */ &Iu32_,
    /* [38] */ &Scalar_,
  };

  /// The open-numbers, and number matchers
  NumberMatcher const* const number[13] = {
    /* [0] */ &open_number_0_,
    /* [1] */ &open_number_1_,
    /* [2] */ &open_number_2_,
    /* [3] */ &F32TexelFormat_,
    /* [4] */ &I32TexelFormat_,
    /* [5] */ &U32TexelFormat_,
    /* [6] */ &ReadOrWrite_,
    /* [7] */ &FunctionPrivateWorkgroup_,
    /* [8] */ &WorkgroupOrStorage_,
    /* [9] */ &Storage_,
    /* [10] */ &Write_,
    /* [11] */ &Read_,
    /* [12] */ &ReadWrite_,
  };
};

Matchers::Matchers() = default;
Matchers::~Matchers() = default;

constexpr MatcherIndex kMatcherIndices[] = {
  /* [0] */ 30,
  /* [1] */ 5,
  /* [2] */ 10,
  /* [3] */ 1,
  /* [4] */ 8,
  /* [5] */ 0,
  /* [6] */ 3,
  /* [7] */ 2,
  /* [8] */ 10,
  /* [9] */ 1,
  /* [10] */ 8,
  /* [11] */ 0,
  /* [12] */ 2,
  /* [13] */ 2,
  /* [14] */ 10,
  /* [15] */ 0,
  /* [16] */ 11,
  /* [17] */ 0,
  /* [18] */ 12,
  /* [19] */ 10,
  /* [20] */ 9,
  /* [21] */ 12,
  /* [22] */ 0,
  /* [23] */ 0,
  /* [24] */ 9,
  /* [25] */ 0,
  /* [26] */ 1,
  /* [27] */ 2,
  /* [28] */ 9,
  /* [29] */ 0,
  /* [30] */ 0,
  /* [31] */ 2,
  /* [32] */ 10,
  /* [33] */ 0,
  /* [34] */ 3,
  /* [35] */ 1,
  /* [36] */ 10,
  /* [37] */ 0,
  /* [38] */ 2,
  /* [39] */ 1,
  /* [40] */ 9,
  /* [41] */ 1,
  /* [42] */ 0,
  /* [43] */ 2,
  /* [44] */ 8,
  /* [45] */ 0,
  /* [46] */ 0,
  /* [47] */ 29,
  /* [48] */ 0,
  /* [49] */ 1,
  /* [50] */ 30,
  /* [51] */ 0,
  /* [52] */ 1,
  /* [53] */ 28,
  /* [54] */ 0,
  /* [55] */ 1,
  /* [56] */ 30,
  /* [57] */ 5,
  /* [58] */ 11,
  /* [59] */ 27,
  /* [60] */ 0,
  /* [61] */ 1,
  /* [62] */ 29,
  /* [63] */ 5,
  /* [64] */ 11,
  /* [65] */ 28,
  /* [66] */ 5,
  /* [67] */ 11,
  /* [68] */ 8,
  /* [69] */ 0,
  /* [70] */ 1,
  /* [71] */ 27,
  /* [72] */ 5,
  /* [73] */ 11,
  /* [74] */ 30,
  /* [75] */ 4,
  /* [76] */ 11,
  /* [77] */ 29,
  /* [78] */ 4,
  /* [79] */ 11,
  /* [80] */ 28,
  /* [81] */ 4,
  /* [82] */ 11,
  /* [83] */ 27,
  /* [84] */ 4,
  /* [85] */ 11,
  /* [86] */ 30,
  /* [87] */ 3,
  /* [88] */ 11,
  /* [89] */ 29,
  /* [90] */ 3,
  /* [91] */ 11,
  /* [92] */ 28,
  /* [93] */ 3,
  /* [94] */ 11,
  /* [95] */ 27,
  /* [96] */ 3,
  /* [97] */ 11,
  /* [98] */ 29,
  /* [99] */ 5,
  /* [100] */ 10,
  /* [101] */ 28,
  /* [102] */ 5,
  /* [103] */ 10,
  /* [104] */ 27,
  /* [105] */ 5,
  /* [106] */ 10,
  /* [107] */ 30,
  /* [108] */ 4,
  /* [109] */ 10,
  /* [110] */ 29,
  /* [111] */ 4,
  /* [112] */ 10,
  /* [113] */ 28,
  /* [114] */ 4,
  /* [115] */ 10,
  /* [116] */ 27,
  /* [117] */ 4,
  /* [118] */ 10,
  /* [119] */ 30,
  /* [120] */ 3,
  /* [121] */ 10,
  /* [122] */ 29,
  /* [123] */ 3,
  /* [124] */ 10,
  /* [125] */ 27,
  /* [126] */ 3,
  /* [127] */ 10,
  /* [128] */ 28,
  /* [129] */ 3,
  /* [130] */ 10,
  /* [131] */ 6,
  /* [132] */ 2,
  /* [133] */ 5,
  /* [134] */ 3,
  /* [135] */ 7,
  /* [136] */ 2,
  /* [137] */ 6,
  /* [138] */ 3,
  /* [139] */ 7,
  /* [140] */ 3,
  /* [141] */ 5,
  /* [142] */ 2,
  /* [143] */ 7,
  /* [144] */ 4,
  /* [145] */ 33,
  /* [146] */ 0,
  /* [147] */ 20,
  /* [148] */ 2,
  /* [149] */ 15,
  /* [150] */ 0,
  /* [151] */ 7,
  /* [152] */ 0,
  /* [153] */ 16,
  /* [154] */ 0,
  /* [155] */ 35,
  /* [156] */ 0,
  /* [157] */ 19,
  /* [158] */ 2,
  /* [159] */ 17,
  /* [160] */ 0,
  /* [161] */ 18,
  /* [162] */ 0,
  /* [163] */ 18,
  /* [164] */ 2,
  /* [165] */ 21,
  /* [166] */ 0,
  /* [167] */ 17,
  /* [168] */ 2,
  /* [169] */ 16,
  /* [170] */ 2,
  /* [171] */ 19,
  /* [172] */ 0,
  /* [173] */ 20,
  /* [174] */ 0,
  /* [175] */ 15,
  /* [176] */ 2,
  /* [177] */ 5,
  /* [178] */ 0,
  /* [179] */ 13,
  /* [180] */ 25,
  /* [181] */ 24,
  /* [182] */ 23,
  /* [183] */ 22,
  /* [184] */ 14,
  /* [185] */ 26,
  /* [186] */ 31,
  /* [187] */ 32,
  /* [188] */ 34,
};

// Assert that the MatcherIndex is big enough to index all the matchers, plus
// kNoMatcher.
static_assert(static_cast<int>(sizeof(kMatcherIndices) / sizeof(kMatcherIndices[0])) <
              static_cast<int>(std::numeric_limits<MatcherIndex>::max() - 1),
              "MatcherIndex is not large enough to index kMatcherIndices");

constexpr ParameterInfo kParameters[] = {
  {
    /* [0] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [1] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [2] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [3] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [4] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [5] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [6] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [7] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [8] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [9] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [10] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [11] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [12] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [13] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [14] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [15] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [16] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [17] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [18] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [19] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [20] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [21] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [22] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [23] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [24] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [25] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [26] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [27] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [28] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [29] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [30] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [31] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [32] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [33] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [34] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [35] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [36] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [37] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [38] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [39] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [40] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [41] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [42] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [43] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [44] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [45] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [46] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [47] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [48] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [49] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [50] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [51] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [52] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [53] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [54] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [55] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [56] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [57] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [58] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [59] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [60] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [61] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [62] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [63] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [64] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [65] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [66] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [67] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [68] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [69] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [70] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [71] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [72] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [73] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [74] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [75] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [76] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [77] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [78] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [79] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [80] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [81] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [82] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [83] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [84] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [85] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [86] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [87] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [88] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [89] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [90] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [91] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [92] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [93] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [94] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [95] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [96] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [97] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [98] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [99] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [100] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [101] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [102] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [103] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [104] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [105] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [106] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [107] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [108] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [109] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [110] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [111] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [112] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [113] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [114] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [115] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [116] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [117] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [118] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [119] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [120] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [121] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [122] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [123] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [124] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [125] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [126] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [127] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [128] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [129] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [130] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [131] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [132] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [133] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [134] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [135] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [136] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [137] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [138] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [139] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [140] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [141] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [142] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [143] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [144] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [145] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [146] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [147] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [148] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [149] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [150] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [151] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [152] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [153] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [154] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [155] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [156] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [157] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [158] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [159] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [160] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [161] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [162] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [163] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [164] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [165] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [166] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [167] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [168] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [169] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [170] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [171] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [172] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [173] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [174] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [175] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [176] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [177] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [178] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [179] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [180] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [181] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [182] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [183] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [184] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [185] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [186] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [187] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [188] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [189] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [190] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [191] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [192] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [193] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [194] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [195] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [196] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [197] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [198] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [199] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[98],
  },
  {
    /* [200] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [201] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [202] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[143],
  },
  {
    /* [203] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [204] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [205] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [206] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [207] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [208] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [209] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [210] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [211] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [212] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [213] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [214] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [215] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[110],
  },
  {
    /* [216] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [217] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [218] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [219] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [220] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [221] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [222] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [223] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [224] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [225] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [226] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [227] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [228] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [229] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [230] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [231] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [232] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [233] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [234] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [235] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [236] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [237] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [238] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [239] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [240] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [241] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [242] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [243] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[122],
  },
  {
    /* [244] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [245] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [246] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [247] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [248] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [249] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [250] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [251] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [252] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [253] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [254] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [255] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [256] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [257] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [258] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [259] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [260] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [261] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [262] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [263] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [264] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [265] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [266] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [267] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [268] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [269] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [270] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[119],
  },
  {
    /* [271] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [272] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [273] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [274] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [275] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [276] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [277] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [278] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [279] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[116],
  },
  {
    /* [280] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [281] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [282] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [283] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [284] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [285] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [286] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [287] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [288] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [289] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [290] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [291] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[101],
  },
  {
    /* [292] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [293] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[143],
  },
  {
    /* [294] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [295] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [296] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[143],
  },
  {
    /* [297] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [298] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [299] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [300] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [301] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [302] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [303] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [304] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [305] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [306] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [307] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [308] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [309] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [310] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [311] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [312] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [313] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [314] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [315] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[125],
  },
  {
    /* [316] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [317] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [318] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [319] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [320] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[3],
  },
  {
    /* [321] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [322] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [323] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [324] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [325] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [326] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [327] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [328] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [329] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [330] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [331] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [332] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [333] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[77],
  },
  {
    /* [334] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [335] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [336] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[153],
  },
  {
    /* [337] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [338] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [339] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [340] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [341] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[3],
  },
  {
    /* [342] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [343] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [344] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [345] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [346] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [347] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [348] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[62],
  },
  {
    /* [349] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [350] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [351] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [352] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [353] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [354] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [355] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [356] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [357] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [358] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [359] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [360] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [361] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [362] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [363] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [364] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [365] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [366] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [367] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [368] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [369] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [370] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [371] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [372] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [373] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [374] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [375] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[175],
  },
  {
    /* [376] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [377] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [378] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [379] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [380] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[143],
  },
  {
    /* [381] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[186],
  },
  {
    /* [382] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [383] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [384] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [385] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [386] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [387] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [388] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [389] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [390] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [391] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [392] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [393] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [394] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [395] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [396] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[8],
  },
  {
    /* [397] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [398] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [399] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [400] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [401] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [402] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [403] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [404] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [405] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [406] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [407] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [408] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[4],
  },
  {
    /* [409] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [410] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [411] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [412] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[2],
  },
  {
    /* [413] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [414] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[32],
  },
  {
    /* [415] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [416] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [417] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [418] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [419] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[92],
  },
  {
    /* [420] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [421] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [422] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [423] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [424] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [425] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [426] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [427] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [428] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [429] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[86],
  },
  {
    /* [430] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [431] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [432] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [433] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [434] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [435] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [436] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [437] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[80],
  },
  {
    /* [438] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [439] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[71],
  },
  {
    /* [440] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [441] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[65],
  },
  {
    /* [442] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [443] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [444] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [445] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [446] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [447] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[56],
  },
  {
    /* [448] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [449] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[186],
  },
  {
    /* [450] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [451] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [452] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [453] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [454] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [455] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [456] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [457] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [458] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [459] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [460] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [461] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [462] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [463] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [464] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [465] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [466] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [467] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [468] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [469] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[153],
  },
  {
    /* [470] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [471] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [472] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [473] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [474] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [475] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [476] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [477] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [478] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [479] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [480] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [481] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[74],
  },
  {
    /* [482] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [483] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [484] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [485] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [486] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [487] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [488] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [489] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [490] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [491] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [492] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [493] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [494] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[153],
  },
  {
    /* [495] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [496] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[59],
  },
  {
    /* [497] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[53],
  },
  {
    /* [498] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[47],
  },
  {
    /* [499] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[50],
  },
  {
    /* [500] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[186],
  },
  {
    /* [501] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [502] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [503] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [504] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [505] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[47],
  },
  {
    /* [506] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [507] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[153],
  },
  {
    /* [508] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [509] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [510] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [511] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [512] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [513] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [514] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [515] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [516] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [517] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [518] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [519] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [520] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [521] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [522] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [523] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [524] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [525] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [526] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [527] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[24],
  },
  {
    /* [528] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [529] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [530] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [531] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [532] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [533] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [534] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [535] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [536] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [537] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [538] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [539] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [540] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [541] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [542] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [543] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [544] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [545] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [546] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [547] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [548] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [549] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [550] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [551] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [552] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [553] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [554] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [555] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [556] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [557] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [558] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [559] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [560] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [561] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [562] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [563] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [564] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [565] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [566] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [567] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [568] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [569] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [570] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [571] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [572] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [573] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [574] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [575] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [576] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [577] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [578] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [579] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [580] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [581] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [582] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [583] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [584] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [585] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [586] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [587] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [588] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [589] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [590] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [591] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [592] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [593] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [594] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [595] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [596] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [597] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [598] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[28],
  },
  {
    /* [599] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [600] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [601] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [602] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [603] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [604] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [605] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [606] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [607] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [608] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [609] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [610] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [611] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [612] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[19],
  },
  {
    /* [613] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [614] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [615] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [616] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
};

constexpr OpenTypeInfo kOpenTypes[] = {
  {
    /* [0] */
    /* name */ "T",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "T",
    /* matcher index */ 36,
  },
  {
    /* [2] */
    /* name */ "T",
    /* matcher index */ 37,
  },
  {
    /* [3] */
    /* name */ "T",
    /* matcher index */ 38,
  },
};

constexpr OpenNumberInfo kOpenNumbers[] = {
  {
    /* [0] */
    /* name */ "M",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "N",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [2] */
    /* name */ "S",
    /* matcher index */ 7,
  },
  {
    /* [3] */
    /* name */ "A",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [4] */
    /* name */ "F",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [5] */
    /* name */ "A",
    /* matcher index */ 6,
  },
  {
    /* [6] */
    /* name */ "S",
    /* matcher index */ 8,
  },
};

constexpr OverloadInfo kOverloads[] = {
  {
    /* [0] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[518],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [1] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[465],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [2] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[494],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [3] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[469],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [4] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[492],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [5] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[483],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [6] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[490],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [7] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[477],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [8] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[488],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [9] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[409],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [10] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[485],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [11] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[415],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [12] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[486],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [13] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[487],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [14] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[479],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [15] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[489],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [16] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[475],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [17] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[491],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [18] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[471],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [19] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[493],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [20] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[467],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [21] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[495],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [22] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[496],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [23] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[497],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [24] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[498],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [25] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[499],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [26] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[500],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [27] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[297],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [28] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[336],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [29] */
    /* num parameters */ 4,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[183],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [30] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[300],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [31] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[303],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [32] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[306],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [33] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[179],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [34] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[309],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [35] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[417],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [36] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[419],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [37] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[267],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [38] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[429],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [39] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[435],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [40] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[437],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [41] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[333],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [42] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[481],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [43] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[439],
    /* return matcher indices */ &kMatcherIndices[143],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [44] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[441],
    /* return matcher indices */ &kMatcherIndices[143],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [45] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[348],
    /* return matcher indices */ &kMatcherIndices[143],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [46] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[447],
    /* return matcher indices */ &kMatcherIndices[143],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [47] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[449],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [48] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[171],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [49] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[146],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [50] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[161],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [51] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[49],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [52] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[195],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [53] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[81],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [54] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[211],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [55] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[86],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [56] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[223],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [57] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[91],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [58] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[121],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [59] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[13],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [60] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[239],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [61] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[71],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [62] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[381],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [63] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[375],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [64] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[369],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [65] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[235],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [66] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[231],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [67] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[111],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [68] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[366],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [69] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[227],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [70] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[360],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [71] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[219],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [72] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[327],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [73] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[207],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [74] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[203],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [75] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[96],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [76] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[330],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [77] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[175],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [78] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[315],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [79] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[324],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [80] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[243],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [81] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[270],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [82] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[279],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [83] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[282],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [84] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[215],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [85] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[288],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [86] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[378],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [87] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[291],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [88] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[199],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [89] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[294],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [90] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[506],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [91] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[507],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [92] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[508],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [93] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[509],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [94] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[510],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [95] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[511],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [96] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[512],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [97] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[513],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [98] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[514],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [99] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[515],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [100] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[101],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [101] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[43],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [102] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[37],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [103] */
    /* num parameters */ 7,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[0],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [104] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[131],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [105] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[25],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [106] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[141],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [107] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[7],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [108] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[259],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [109] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[126],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [110] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[116],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [111] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[19],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [112] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[187],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [113] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[166],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [114] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[247],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [115] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[136],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [116] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[263],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [117] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[156],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [118] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[151],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [119] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[31],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [120] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[255],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [121] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[106],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [122] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[191],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [123] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[61],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [124] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[76],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [125] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[55],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [126] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[251],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [127] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[66],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [128] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[501],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [129] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[502],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [130] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[503],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [131] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[504],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [132] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[505],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [133] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[2],
    /* parameters */ &kParameters[397],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [134] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 3,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[395],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [135] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[552],
    /* return matcher indices */ &kMatcherIndices[187],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [136] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[551],
    /* return matcher indices */ &kMatcherIndices[145],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [137] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[2],
    /* parameters */ &kParameters[413],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [138] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 3,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[411],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [139] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[577],
    /* return matcher indices */ &kMatcherIndices[188],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [140] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[576],
    /* return matcher indices */ &kMatcherIndices[155],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [141] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[351],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [142] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[354],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [143] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[357],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [144] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[339],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [145] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[318],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [146] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[384],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [147] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[445],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [148] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[443],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [149] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[425],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [150] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[423],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [151] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[597],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [152] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[596],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [153] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[595],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [154] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[594],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [155] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[593],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [156] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[592],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [157] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[591],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [158] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[590],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [159] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[589],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [160] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[588],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [161] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[587],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [162] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[586],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [163] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[585],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [164] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[584],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [165] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[583],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [166] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[582],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [167] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[534],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [168] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[533],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [169] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[581],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [170] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[580],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [171] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[273],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [172] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[276],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [173] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[579],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [174] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[578],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [175] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[600],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [176] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[599],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [177] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[575],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [178] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[574],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [179] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[573],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [180] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[572],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [181] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[571],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [182] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[570],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [183] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[602],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [184] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[601],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [185] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[568],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [186] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[567],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [187] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[566],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [188] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[565],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [189] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[564],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [190] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[563],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [191] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[562],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [192] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[561],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [193] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[560],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [194] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[559],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [195] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[387],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [196] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[407],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [197] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[558],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [198] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[557],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [199] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[556],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [200] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[555],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [201] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[554],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [202] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[553],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [203] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[405],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [204] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[403],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [205] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[401],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [206] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[399],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [207] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[604],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [208] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[603],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [209] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[345],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [210] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[342],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [211] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[516],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [212] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[517],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [213] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[312],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [214] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[321],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [215] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[536],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [216] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[535],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [217] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[606],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [218] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[605],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [219] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[608],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [220] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[607],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [221] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[526],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [222] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[525],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [223] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[389],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [224] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[391],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [225] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[529],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [226] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[528],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [227] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[611],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [228] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[610],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [229] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[544],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [230] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[543],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [231] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[542],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [232] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[541],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [233] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[532],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [234] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[615],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [235] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[540],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [236] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[539],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [237] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[538],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [238] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[537],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [239] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[431],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [240] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[433],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [241] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[531],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [242] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[530],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [243] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[616],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [244] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[519],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [245] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[548],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [246] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[617],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [247] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[363],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [248] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[393],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [249] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[527],
    /* return matcher indices */ &kMatcherIndices[40],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [250] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[545],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [251] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[524],
    /* return matcher indices */ &kMatcherIndices[141],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [252] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[523],
    /* return matcher indices */ &kMatcherIndices[141],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [253] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[522],
    /* return matcher indices */ &kMatcherIndices[141],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [254] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[521],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [255] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[520],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [256] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[617],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [257] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[546],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [258] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[547],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [259] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[549],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [260] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[550],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [261] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[569],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [262] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[285],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [263] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[421],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [264] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[598],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [265] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[427],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [266] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[612],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [267] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[613],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [268] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[614],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [269] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[609],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [270] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[451],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [271] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[453],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [272] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[455],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [273] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[457],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [274] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[459],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [275] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[461],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [276] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[463],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [277] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[473],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [278] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[372],
    /* return matcher indices */ &kMatcherIndices[177],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
};

constexpr IntrinsicInfo kIntrinsics[] = {
  {
    /* [0] */
    /* fn abs<T : fiu32>(T) -> T */
    /* fn abs<N : num, T : fiu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[243],
  },
  {
    /* [1] */
    /* fn acos(f32) -> f32 */
    /* fn acos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[233],
  },
  {
    /* [2] */
    /* fn all<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[268],
  },
  {
    /* [3] */
    /* fn any<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[267],
  },
  {
    /* [4] */
    /* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[266],
  },
  {
    /* [5] */
    /* fn asin(f32) -> f32 */
    /* fn asin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[227],
  },
  {
    /* [6] */
    /* fn atan(f32) -> f32 */
    /* fn atan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[219],
  },
  {
    /* [7] */
    /* fn atan2(f32, f32) -> f32 */
    /* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[147],
  },
  {
    /* [8] */
    /* fn ceil(f32) -> f32 */
    /* fn ceil<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[217],
  },
  {
    /* [9] */
    /* fn clamp<T : fiu32>(T, T, T) -> T */
    /* fn clamp<N : num, T : fiu32>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[209],
  },
  {
    /* [10] */
    /* fn cos(f32) -> f32 */
    /* fn cos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[207],
  },
  {
    /* [11] */
    /* fn cosh(f32) -> f32 */
    /* fn cosh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[183],
  },
  {
    /* [12] */
    /* fn countOneBits<T : iu32>(T) -> T */
    /* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[175],
  },
  {
    /* [13] */
    /* fn cross(vec3<f32>, vec3<f32>) -> vec3<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[265],
  },
  {
    /* [14] */
    /* fn determinant<N : num>(mat<N, N, f32>) -> f32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[264],
  },
  {
    /* [15] */
    /* fn distance(f32, f32) -> f32 */
    /* fn distance<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[149],
  },
  {
    /* [16] */
    /* fn dot<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[263],
  },
  {
    /* [17] */
    /* fn dpdx(f32) -> f32 */
    /* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[151],
  },
  {
    /* [18] */
    /* fn dpdxCoarse(f32) -> f32 */
    /* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[153],
  },
  {
    /* [19] */
    /* fn dpdxFine(f32) -> f32 */
    /* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[155],
  },
  {
    /* [20] */
    /* fn dpdy(f32) -> f32 */
    /* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[157],
  },
  {
    /* [21] */
    /* fn dpdyCoarse(f32) -> f32 */
    /* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[159],
  },
  {
    /* [22] */
    /* fn dpdyFine(f32) -> f32 */
    /* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[161],
  },
  {
    /* [23] */
    /* fn exp(f32) -> f32 */
    /* fn exp<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[163],
  },
  {
    /* [24] */
    /* fn exp2(f32) -> f32 */
    /* fn exp2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[165],
  },
  {
    /* [25] */
    /* fn faceForward<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[262],
  },
  {
    /* [26] */
    /* fn floor(f32) -> f32 */
    /* fn floor<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[169],
  },
  {
    /* [27] */
    /* fn fma(f32, f32, f32) -> f32 */
    /* fn fma<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[171],
  },
  {
    /* [28] */
    /* fn fract(f32) -> f32 */
    /* fn fract<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[173],
  },
  {
    /* [29] */
    /* fn frexp<S : function_private_workgroup, A : access>(f32, ptr<S, i32, A>) -> f32 */
    /* fn frexp<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, i32>, A>) -> vec<N, f32> */
    /* fn frexp(f32) -> _frexp_result */
    /* fn frexp<N : num>(vec<N, f32>) -> _frexp_result_vec<N> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[137],
  },
  {
    /* [30] */
    /* fn fwidth(f32) -> f32 */
    /* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[177],
  },
  {
    /* [31] */
    /* fn fwidthCoarse(f32) -> f32 */
    /* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[179],
  },
  {
    /* [32] */
    /* fn fwidthFine(f32) -> f32 */
    /* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[181],
  },
  {
    /* [33] */
    /* fn ignore<T>(T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[261],
  },
  {
    /* [34] */
    /* fn inverseSqrt(f32) -> f32 */
    /* fn inverseSqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[185],
  },
  {
    /* [35] */
    /* fn isFinite(f32) -> bool */
    /* fn isFinite<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[187],
  },
  {
    /* [36] */
    /* fn isInf(f32) -> bool */
    /* fn isInf<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[189],
  },
  {
    /* [37] */
    /* fn isNan(f32) -> bool */
    /* fn isNan<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[191],
  },
  {
    /* [38] */
    /* fn isNormal(f32) -> bool */
    /* fn isNormal<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[193],
  },
  {
    /* [39] */
    /* fn ldexp(f32, i32) -> f32 */
    /* fn ldexp<N : num>(vec<N, f32>, vec<N, i32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[195],
  },
  {
    /* [40] */
    /* fn length(f32) -> f32 */
    /* fn length<N : num>(vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[197],
  },
  {
    /* [41] */
    /* fn log(f32) -> f32 */
    /* fn log<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[199],
  },
  {
    /* [42] */
    /* fn log2(f32) -> f32 */
    /* fn log2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[201],
  },
  {
    /* [43] */
    /* fn max<T : fiu32>(T, T) -> T */
    /* fn max<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[203],
  },
  {
    /* [44] */
    /* fn min<T : fiu32>(T, T) -> T */
    /* fn min<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[205],
  },
  {
    /* [45] */
    /* fn mix(f32, f32, f32) -> f32 */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[141],
  },
  {
    /* [46] */
    /* fn modf<S : function_private_workgroup, A : access>(f32, ptr<S, f32, A>) -> f32 */
    /* fn modf<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32> */
    /* fn modf(f32) -> _modf_result */
    /* fn modf<N : num>(vec<N, f32>) -> _modf_result_vec<N> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[133],
  },
  {
    /* [47] */
    /* fn normalize<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[260],
  },
  {
    /* [48] */
    /* fn pack2x16float(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[259],
  },
  {
    /* [49] */
    /* fn pack2x16snorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[245],
  },
  {
    /* [50] */
    /* fn pack2x16unorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[258],
  },
  {
    /* [51] */
    /* fn pack4x8snorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[257],
  },
  {
    /* [52] */
    /* fn pack4x8unorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[250],
  },
  {
    /* [53] */
    /* fn pow(f32, f32) -> f32 */
    /* fn pow<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[223],
  },
  {
    /* [54] */
    /* fn reflect<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[248],
  },
  {
    /* [55] */
    /* fn refract<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[247],
  },
  {
    /* [56] */
    /* fn reverseBits<T : iu32>(T) -> T */
    /* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[229],
  },
  {
    /* [57] */
    /* fn round(f32) -> f32 */
    /* fn round<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[231],
  },
  {
    /* [58] */
    /* fn select<T : scalar>(T, T, bool) -> T */
    /* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */
    /* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[144],
  },
  {
    /* [59] */
    /* fn sign(f32) -> f32 */
    /* fn sign<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[235],
  },
  {
    /* [60] */
    /* fn sin(f32) -> f32 */
    /* fn sin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[237],
  },
  {
    /* [61] */
    /* fn sinh(f32) -> f32 */
    /* fn sinh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[215],
  },
  {
    /* [62] */
    /* fn smoothStep(f32, f32, f32) -> f32 */
    /* fn smoothStep<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[213],
  },
  {
    /* [63] */
    /* fn sqrt(f32) -> f32 */
    /* fn sqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[167],
  },
  {
    /* [64] */
    /* fn step(f32, f32) -> f32 */
    /* fn step<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[239],
  },
  {
    /* [65] */
    /* fn storageBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[246],
  },
  {
    /* [66] */
    /* fn tan(f32) -> f32 */
    /* fn tan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[241],
  },
  {
    /* [67] */
    /* fn tanh(f32) -> f32 */
    /* fn tanh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[225],
  },
  {
    /* [68] */
    /* fn transpose<M : num, N : num>(mat<M, N, f32>) -> mat<N, M, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[249],
  },
  {
    /* [69] */
    /* fn trunc(f32) -> f32 */
    /* fn trunc<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[221],
  },
  {
    /* [70] */
    /* fn unpack2x16float(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[251],
  },
  {
    /* [71] */
    /* fn unpack2x16snorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[252],
  },
  {
    /* [72] */
    /* fn unpack2x16unorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[253],
  },
  {
    /* [73] */
    /* fn unpack4x8snorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[254],
  },
  {
    /* [74] */
    /* fn unpack4x8unorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[255],
  },
  {
    /* [75] */
    /* fn workgroupBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[256],
  },
  {
    /* [76] */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>, level: i32) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>, level: i32) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_1d<F, A>) -> i32 */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_2d<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_2d_array<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_3d<F, A>) -> vec3<i32> */
    /* fn textureDimensions(texture: texture_external) -> vec2<i32> */
    /* num overloads */ 27,
    /* overloads */ &kOverloads[0],
  },
  {
    /* [77] */
    /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_cube_array) -> i32 */
    /* fn textureNumLayers<F : texel_format, A : read_or_write>(texture: texture_storage_2d_array<F, A>) -> i32 */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[128],
  },
  {
    /* [78] */
    /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube_array) -> i32 */
    /* num overloads */ 10,
    /* overloads */ &kOverloads[90],
  },
  {
    /* [79] */
    /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */
    /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[211],
  },
  {
    /* [80] */
    /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32 */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[63],
  },
  {
    /* [81] */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[108],
  },
  {
    /* [82] */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[122],
  },
  {
    /* [83] */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[116],
  },
  {
    /* [84] */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[100],
  },
  {
    /* [85] */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[48],
  },
  {
    /* [86] */
    /* fn textureStore(texture: texture_storage_1d<f32_texel_format, write>, coords: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d<f32_texel_format, write>, coords: vec2<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d_array<f32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_3d<f32_texel_format, write>, coords: vec3<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_1d<i32_texel_format, write>, coords: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d<i32_texel_format, write>, coords: vec2<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d_array<i32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_3d<i32_texel_format, write>, coords: vec3<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_1d<u32_texel_format, write>, coords: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d<u32_texel_format, write>, coords: vec2<i32>, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */
    /* num overloads */ 12,
    /* overloads */ &kOverloads[78],
  },
  {
    /* [87] */
    /* fn textureLoad<T : fiu32>(texture: texture_1d<T>, coords: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d<T>, coords: vec2<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d_array<T>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_3d<T>, coords: vec3<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_multisampled_2d<T>, coords: vec2<i32>, sample_index: i32) -> vec4<T> */
    /* fn textureLoad(texture: texture_depth_2d, coords: vec2<i32>, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_depth_2d_array, coords: vec2<i32>, array_index: i32, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_depth_multisampled_2d, coords: vec2<i32>, sample_index: i32) -> f32 */
    /* fn textureLoad(texture: texture_storage_1d<f32_texel_format, read>, coords: i32) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_2d<f32_texel_format, read>, coords: vec2<i32>) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_2d_array<f32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_3d<f32_texel_format, read>, coords: vec3<i32>) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_1d<i32_texel_format, read>, coords: i32) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_2d<i32_texel_format, read>, coords: vec2<i32>) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_2d_array<i32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_3d<i32_texel_format, read>, coords: vec3<i32>) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_1d<u32_texel_format, read>, coords: i32) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_2d<u32_texel_format, read>, coords: vec2<i32>) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_2d_array<u32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_3d<u32_texel_format, read>, coords: vec3<i32>) -> vec4<u32> */
    /* fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32> */
    /* num overloads */ 21,
    /* overloads */ &kOverloads[27],
  },
  {
    /* [88] */
    /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[269],
  },
  {
    /* [89] */
    /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[270],
  },
  {
    /* [90] */
    /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[271],
  },
  {
    /* [91] */
    /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[272],
  },
  {
    /* [92] */
    /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[273],
  },
  {
    /* [93] */
    /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[274],
  },
  {
    /* [94] */
    /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[275],
  },
  {
    /* [95] */
    /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[276],
  },
  {
    /* [96] */
    /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[277],
  },
  {
    /* [97] */
    /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> vec2<T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[278],
  },
};

// clang-format on
