#include <metal_stdlib>

using namespace metal;
struct FragmentOutputs {
  int loc0;
  uint loc1;
  float loc2;
  float4 loc3;
};

struct tint_symbol_1 {
  int loc0 [[color(0)]];
  uint loc1 [[color(1)]];
  float loc2 [[color(2)]];
  float4 loc3 [[color(3)]];
};

FragmentOutputs tint_symbol_inner() {
  FragmentOutputs const tint_symbol_2 = {.loc0=1, .loc1=1u, .loc2=1.0f, .loc3=float4(1.0f, 2.0f, 3.0f, 4.0f)};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol() {
  FragmentOutputs const inner_result = tint_symbol_inner();
  tint_symbol_1 wrapper_result = {};
  wrapper_result.loc0 = inner_result.loc0;
  wrapper_result.loc1 = inner_result.loc1;
  wrapper_result.loc2 = inner_result.loc2;
  wrapper_result.loc3 = inner_result.loc3;
  return wrapper_result;
}

