///|
type Ox0[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox0[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 0)
}

///|
pub impl[T : ToInt] ToInt for Ox0[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 0)
}

///|
type Ox1[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox1[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 1)
}

///|
pub impl[T : ToInt] ToInt for Ox1[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 1)
}

///|
type Ox2[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox2[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 2)
}

///|
pub impl[T : ToInt] ToInt for Ox2[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 2)
}

///|
type Ox3[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox3[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 3)
}

///|
pub impl[T : ToInt] ToInt for Ox3[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 3)
}

///|
type Ox4[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox4[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 4)
}

///|
pub impl[T : ToInt] ToInt for Ox4[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 4)
}

///|
type Ox5[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox5[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 5)
}

///|
pub impl[T : ToInt] ToInt for Ox5[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 5)
}

///|
type Ox6[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox6[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 6)
}

///|
pub impl[T : ToInt] ToInt for Ox6[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 6)
}

///|
type Ox7[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox7[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 7)
}

///|
pub impl[T : ToInt] ToInt for Ox7[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 7)
}

///|
type Ox8[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox8[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 8)
}

///|
pub impl[T : ToInt] ToInt for Ox8[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 8)
}

///|
type Ox9[_]

///|
pub impl[T : ToUInt64] ToUInt64 for Ox9[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 9)
}

///|
pub impl[T : ToInt] ToInt for Ox9[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 9)
}

///|
type OxA[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxA[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 10)
}

///|
pub impl[T : ToInt] ToInt for OxA[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 10)
}

///|
type OxB[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxB[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 11)
}

///|
pub impl[T : ToInt] ToInt for OxB[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 11)
}

///|
type OxC[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxC[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 12)
}

///|
pub impl[T : ToInt] ToInt for OxC[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 12)
}

///|
type OxD[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxD[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 13)
}

///|
pub impl[T : ToInt] ToInt for OxD[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 13)
}

///|
type OxE[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxE[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 14)
}

///|
pub impl[T : ToInt] ToInt for OxE[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 14)
}

///|
type OxF[_]

///|
pub impl[T : ToUInt64] ToUInt64 for OxF[T] with to_uint64(value : UInt64) -> UInt64 {
  T::to_uint64(value * 16 + 15)
}

///|
pub impl[T : ToInt] ToInt for OxF[T] with to_int(value : Int) -> Int {
  T::to_int(value * 16 + 15)
}

///|
pub type Ox00[T] = Ox0[Ox0[T]]

///|
pub type Ox01[T] = Ox0[Ox1[T]]

///|
pub type Ox02[T] = Ox0[Ox2[T]]

///|
pub type Ox03[T] = Ox0[Ox3[T]]

///|
pub type Ox04[T] = Ox0[Ox4[T]]

///|
pub type Ox05[T] = Ox0[Ox5[T]]

///|
pub type Ox06[T] = Ox0[Ox6[T]]

///|
pub type Ox07[T] = Ox0[Ox7[T]]

///|
pub type Ox08[T] = Ox0[Ox8[T]]

///|
pub type Ox09[T] = Ox0[Ox9[T]]

///|
pub type Ox0A[T] = Ox0[OxA[T]]

///|
pub type Ox0B[T] = Ox0[OxB[T]]

///|
pub type Ox0C[T] = Ox0[OxC[T]]

///|
pub type Ox0D[T] = Ox0[OxD[T]]

///|
pub type Ox0E[T] = Ox0[OxE[T]]

///|
pub type Ox0F[T] = Ox0[OxF[T]]

///|
pub type Ox10[T] = Ox1[Ox0[T]]

///|
pub type Ox11[T] = Ox1[Ox1[T]]

///|
pub type Ox12[T] = Ox1[Ox2[T]]

///|
pub type Ox13[T] = Ox1[Ox3[T]]

///|
pub type Ox14[T] = Ox1[Ox4[T]]

///|
pub type Ox15[T] = Ox1[Ox5[T]]

///|
pub type Ox16[T] = Ox1[Ox6[T]]

///|
pub type Ox17[T] = Ox1[Ox7[T]]

///|
pub type Ox18[T] = Ox1[Ox8[T]]

///|
pub type Ox19[T] = Ox1[Ox9[T]]

///|
pub type Ox1A[T] = Ox1[OxA[T]]

///|
pub type Ox1B[T] = Ox1[OxB[T]]

///|
pub type Ox1C[T] = Ox1[OxC[T]]

///|
pub type Ox1D[T] = Ox1[OxD[T]]

///|
pub type Ox1E[T] = Ox1[OxE[T]]

///|
pub type Ox1F[T] = Ox1[OxF[T]]

///|
pub type Ox20[T] = Ox2[Ox0[T]]

///|
pub type Ox21[T] = Ox2[Ox1[T]]

///|
pub type Ox22[T] = Ox2[Ox2[T]]

///|
pub type Ox23[T] = Ox2[Ox3[T]]

///|
pub type Ox24[T] = Ox2[Ox4[T]]

///|
pub type Ox25[T] = Ox2[Ox5[T]]

///|
pub type Ox26[T] = Ox2[Ox6[T]]

///|
pub type Ox27[T] = Ox2[Ox7[T]]

///|
pub type Ox28[T] = Ox2[Ox8[T]]

///|
pub type Ox29[T] = Ox2[Ox9[T]]

///|
pub type Ox2A[T] = Ox2[OxA[T]]

///|
pub type Ox2B[T] = Ox2[OxB[T]]

///|
pub type Ox2C[T] = Ox2[OxC[T]]

///|
pub type Ox2D[T] = Ox2[OxD[T]]

///|
pub type Ox2E[T] = Ox2[OxE[T]]

///|
pub type Ox2F[T] = Ox2[OxF[T]]

///|
pub type Ox30[T] = Ox3[Ox0[T]]

///|
pub type Ox31[T] = Ox3[Ox1[T]]

///|
pub type Ox32[T] = Ox3[Ox2[T]]

///|
pub type Ox33[T] = Ox3[Ox3[T]]

///|
pub type Ox34[T] = Ox3[Ox4[T]]

///|
pub type Ox35[T] = Ox3[Ox5[T]]

///|
pub type Ox36[T] = Ox3[Ox6[T]]

///|
pub type Ox37[T] = Ox3[Ox7[T]]

///|
pub type Ox38[T] = Ox3[Ox8[T]]

///|
pub type Ox39[T] = Ox3[Ox9[T]]

///|
pub type Ox3A[T] = Ox3[OxA[T]]

///|
pub type Ox3B[T] = Ox3[OxB[T]]

///|
pub type Ox3C[T] = Ox3[OxC[T]]

///|
pub type Ox3D[T] = Ox3[OxD[T]]

///|
pub type Ox3E[T] = Ox3[OxE[T]]

///|
pub type Ox3F[T] = Ox3[OxF[T]]

///|
pub type Ox40[T] = Ox4[Ox0[T]]

///|
pub type Ox41[T] = Ox4[Ox1[T]]

///|
pub type Ox42[T] = Ox4[Ox2[T]]

///|
pub type Ox43[T] = Ox4[Ox3[T]]

///|
pub type Ox44[T] = Ox4[Ox4[T]]

///|
pub type Ox45[T] = Ox4[Ox5[T]]

///|
pub type Ox46[T] = Ox4[Ox6[T]]

///|
pub type Ox47[T] = Ox4[Ox7[T]]

///|
pub type Ox48[T] = Ox4[Ox8[T]]

///|
pub type Ox49[T] = Ox4[Ox9[T]]

///|
pub type Ox4A[T] = Ox4[OxA[T]]

///|
pub type Ox4B[T] = Ox4[OxB[T]]

///|
pub type Ox4C[T] = Ox4[OxC[T]]

///|
pub type Ox4D[T] = Ox4[OxD[T]]

///|
pub type Ox4E[T] = Ox4[OxE[T]]

///|
pub type Ox4F[T] = Ox4[OxF[T]]

///|
pub type Ox50[T] = Ox5[Ox0[T]]

///|
pub type Ox51[T] = Ox5[Ox1[T]]

///|
pub type Ox52[T] = Ox5[Ox2[T]]

///|
pub type Ox53[T] = Ox5[Ox3[T]]

///|
pub type Ox54[T] = Ox5[Ox4[T]]

///|
pub type Ox55[T] = Ox5[Ox5[T]]

///|
pub type Ox56[T] = Ox5[Ox6[T]]

///|
pub type Ox57[T] = Ox5[Ox7[T]]

///|
pub type Ox58[T] = Ox5[Ox8[T]]

///|
pub type Ox59[T] = Ox5[Ox9[T]]

///|
pub type Ox5A[T] = Ox5[OxA[T]]

///|
pub type Ox5B[T] = Ox5[OxB[T]]

///|
pub type Ox5C[T] = Ox5[OxC[T]]

///|
pub type Ox5D[T] = Ox5[OxD[T]]

///|
pub type Ox5E[T] = Ox5[OxE[T]]

///|
pub type Ox5F[T] = Ox5[OxF[T]]

///|
pub type Ox60[T] = Ox6[Ox0[T]]

///|
pub type Ox61[T] = Ox6[Ox1[T]]

///|
pub type Ox62[T] = Ox6[Ox2[T]]

///|
pub type Ox63[T] = Ox6[Ox3[T]]

///|
pub type Ox64[T] = Ox6[Ox4[T]]

///|
pub type Ox65[T] = Ox6[Ox5[T]]

///|
pub type Ox66[T] = Ox6[Ox6[T]]

///|
pub type Ox67[T] = Ox6[Ox7[T]]

///|
pub type Ox68[T] = Ox6[Ox8[T]]

///|
pub type Ox69[T] = Ox6[Ox9[T]]

///|
pub type Ox6A[T] = Ox6[OxA[T]]

///|
pub type Ox6B[T] = Ox6[OxB[T]]

///|
pub type Ox6C[T] = Ox6[OxC[T]]

///|
pub type Ox6D[T] = Ox6[OxD[T]]

///|
pub type Ox6E[T] = Ox6[OxE[T]]

///|
pub type Ox6F[T] = Ox6[OxF[T]]

///|
pub type Ox70[T] = Ox7[Ox0[T]]

///|
pub type Ox71[T] = Ox7[Ox1[T]]

///|
pub type Ox72[T] = Ox7[Ox2[T]]

///|
pub type Ox73[T] = Ox7[Ox3[T]]

///|
pub type Ox74[T] = Ox7[Ox4[T]]

///|
pub type Ox75[T] = Ox7[Ox5[T]]

///|
pub type Ox76[T] = Ox7[Ox6[T]]

///|
pub type Ox77[T] = Ox7[Ox7[T]]

///|
pub type Ox78[T] = Ox7[Ox8[T]]

///|
pub type Ox79[T] = Ox7[Ox9[T]]

///|
pub type Ox7A[T] = Ox7[OxA[T]]

///|
pub type Ox7B[T] = Ox7[OxB[T]]

///|
pub type Ox7C[T] = Ox7[OxC[T]]

///|
pub type Ox7D[T] = Ox7[OxD[T]]

///|
pub type Ox7E[T] = Ox7[OxE[T]]

///|
pub type Ox7F[T] = Ox7[OxF[T]]

///|
pub type Ox80[T] = Ox8[Ox0[T]]

///|
pub type Ox81[T] = Ox8[Ox1[T]]

///|
pub type Ox82[T] = Ox8[Ox2[T]]

///|
pub type Ox83[T] = Ox8[Ox3[T]]

///|
pub type Ox84[T] = Ox8[Ox4[T]]

///|
pub type Ox85[T] = Ox8[Ox5[T]]

///|
pub type Ox86[T] = Ox8[Ox6[T]]

///|
pub type Ox87[T] = Ox8[Ox7[T]]

///|
pub type Ox88[T] = Ox8[Ox8[T]]

///|
pub type Ox89[T] = Ox8[Ox9[T]]

///|
pub type Ox8A[T] = Ox8[OxA[T]]

///|
pub type Ox8B[T] = Ox8[OxB[T]]

///|
pub type Ox8C[T] = Ox8[OxC[T]]

///|
pub type Ox8D[T] = Ox8[OxD[T]]

///|
pub type Ox8E[T] = Ox8[OxE[T]]

///|
pub type Ox8F[T] = Ox8[OxF[T]]

///|
pub type Ox90[T] = Ox9[Ox0[T]]

///|
pub type Ox91[T] = Ox9[Ox1[T]]

///|
pub type Ox92[T] = Ox9[Ox2[T]]

///|
pub type Ox93[T] = Ox9[Ox3[T]]

///|
pub type Ox94[T] = Ox9[Ox4[T]]

///|
pub type Ox95[T] = Ox9[Ox5[T]]

///|
pub type Ox96[T] = Ox9[Ox6[T]]

///|
pub type Ox97[T] = Ox9[Ox7[T]]

///|
pub type Ox98[T] = Ox9[Ox8[T]]

///|
pub type Ox99[T] = Ox9[Ox9[T]]

///|
pub type Ox9A[T] = Ox9[OxA[T]]

///|
pub type Ox9B[T] = Ox9[OxB[T]]

///|
pub type Ox9C[T] = Ox9[OxC[T]]

///|
pub type Ox9D[T] = Ox9[OxD[T]]

///|
pub type Ox9E[T] = Ox9[OxE[T]]

///|
pub type Ox9F[T] = Ox9[OxF[T]]

///|
pub type OxA0[T] = OxA[Ox0[T]]

///|
pub type OxA1[T] = OxA[Ox1[T]]

///|
pub type OxA2[T] = OxA[Ox2[T]]

///|
pub type OxA3[T] = OxA[Ox3[T]]

///|
pub type OxA4[T] = OxA[Ox4[T]]

///|
pub type OxA5[T] = OxA[Ox5[T]]

///|
pub type OxA6[T] = OxA[Ox6[T]]

///|
pub type OxA7[T] = OxA[Ox7[T]]

///|
pub type OxA8[T] = OxA[Ox8[T]]

///|
pub type OxA9[T] = OxA[Ox9[T]]

///|
pub type OxAA[T] = OxA[OxA[T]]

///|
pub type OxAB[T] = OxA[OxB[T]]

///|
pub type OxAC[T] = OxA[OxC[T]]

///|
pub type OxAD[T] = OxA[OxD[T]]

///|
pub type OxAE[T] = OxA[OxE[T]]

///|
pub type OxAF[T] = OxA[OxF[T]]

///|
pub type OxB0[T] = OxB[Ox0[T]]

///|
pub type OxB1[T] = OxB[Ox1[T]]

///|
pub type OxB2[T] = OxB[Ox2[T]]

///|
pub type OxB3[T] = OxB[Ox3[T]]

///|
pub type OxB4[T] = OxB[Ox4[T]]

///|
pub type OxB5[T] = OxB[Ox5[T]]

///|
pub type OxB6[T] = OxB[Ox6[T]]

///|
pub type OxB7[T] = OxB[Ox7[T]]

///|
pub type OxB8[T] = OxB[Ox8[T]]

///|
pub type OxB9[T] = OxB[Ox9[T]]

///|
pub type OxBA[T] = OxB[OxA[T]]

///|
pub type OxBB[T] = OxB[OxB[T]]

///|
pub type OxBC[T] = OxB[OxC[T]]

///|
pub type OxBD[T] = OxB[OxD[T]]

///|
pub type OxBE[T] = OxB[OxE[T]]

///|
pub type OxBF[T] = OxB[OxF[T]]

///|
pub type OxC0[T] = OxC[Ox0[T]]

///|
pub type OxC1[T] = OxC[Ox1[T]]

///|
pub type OxC2[T] = OxC[Ox2[T]]

///|
pub type OxC3[T] = OxC[Ox3[T]]

///|
pub type OxC4[T] = OxC[Ox4[T]]

///|
pub type OxC5[T] = OxC[Ox5[T]]

///|
pub type OxC6[T] = OxC[Ox6[T]]

///|
pub type OxC7[T] = OxC[Ox7[T]]

///|
pub type OxC8[T] = OxC[Ox8[T]]

///|
pub type OxC9[T] = OxC[Ox9[T]]

///|
pub type OxCA[T] = OxC[OxA[T]]

///|
pub type OxCB[T] = OxC[OxB[T]]

///|
pub type OxCC[T] = OxC[OxC[T]]

///|
pub type OxCD[T] = OxC[OxD[T]]

///|
pub type OxCE[T] = OxC[OxE[T]]

///|
pub type OxCF[T] = OxC[OxF[T]]

///|
pub type OxD0[T] = OxD[Ox0[T]]

///|
pub type OxD1[T] = OxD[Ox1[T]]

///|
pub type OxD2[T] = OxD[Ox2[T]]

///|
pub type OxD3[T] = OxD[Ox3[T]]

///|
pub type OxD4[T] = OxD[Ox4[T]]

///|
pub type OxD5[T] = OxD[Ox5[T]]

///|
pub type OxD6[T] = OxD[Ox6[T]]

///|
pub type OxD7[T] = OxD[Ox7[T]]

///|
pub type OxD8[T] = OxD[Ox8[T]]

///|
pub type OxD9[T] = OxD[Ox9[T]]

///|
pub type OxDA[T] = OxD[OxA[T]]

///|
pub type OxDB[T] = OxD[OxB[T]]

///|
pub type OxDC[T] = OxD[OxC[T]]

///|
pub type OxDD[T] = OxD[OxD[T]]

///|
pub type OxDE[T] = OxD[OxE[T]]

///|
pub type OxDF[T] = OxD[OxF[T]]

///|
pub type OxE0[T] = OxE[Ox0[T]]

///|
pub type OxE1[T] = OxE[Ox1[T]]

///|
pub type OxE2[T] = OxE[Ox2[T]]

///|
pub type OxE3[T] = OxE[Ox3[T]]

///|
pub type OxE4[T] = OxE[Ox4[T]]

///|
pub type OxE5[T] = OxE[Ox5[T]]

///|
pub type OxE6[T] = OxE[Ox6[T]]

///|
pub type OxE7[T] = OxE[Ox7[T]]

///|
pub type OxE8[T] = OxE[Ox8[T]]

///|
pub type OxE9[T] = OxE[Ox9[T]]

///|
pub type OxEA[T] = OxE[OxA[T]]

///|
pub type OxEB[T] = OxE[OxB[T]]

///|
pub type OxEC[T] = OxE[OxC[T]]

///|
pub type OxED[T] = OxE[OxD[T]]

///|
pub type OxEE[T] = OxE[OxE[T]]

///|
pub type OxEF[T] = OxE[OxF[T]]

///|
pub type OxF0[T] = OxF[Ox0[T]]

///|
pub type OxF1[T] = OxF[Ox1[T]]

///|
pub type OxF2[T] = OxF[Ox2[T]]

///|
pub type OxF3[T] = OxF[Ox3[T]]

///|
pub type OxF4[T] = OxF[Ox4[T]]

///|
pub type OxF5[T] = OxF[Ox5[T]]

///|
pub type OxF6[T] = OxF[Ox6[T]]

///|
pub type OxF7[T] = OxF[Ox7[T]]

///|
pub type OxF8[T] = OxF[Ox8[T]]

///|
pub type OxF9[T] = OxF[Ox9[T]]

///|
pub type OxFA[T] = OxF[OxA[T]]

///|
pub type OxFB[T] = OxF[OxB[T]]

///|
pub type OxFC[T] = OxF[OxC[T]]

///|
pub type OxFD[T] = OxF[OxD[T]]

///|
pub type OxFE[T] = OxF[OxE[T]]

///|
pub type OxFF[T] = OxF[OxF[T]]