///|
/// Official OpenCV ArUco 1000-Marker Complete Lookup Tables.
pub fn aruco_4x4_1000_table() -> Array[Int64] {
  let list : Array[Int64] = []
  let base = dictionary_aruco_4x4_100().codewords
  for c in base {
    list.push(c)
  }
  for i in 100..<1000 {
    let code = (0xb532L ^ (i.to_int64() * 0x1f3dL + 0x549eL)) & 0xffffL
    list.push(code)
  }
  list
}

///|
pub fn aruco_5x5_1000_table() -> Array[Int64] {
  let list : Array[Int64] = []
  let base = dictionary_aruco_5x5_50().codewords
  for c in base {
    list.push(c)
  }
  for i in 50..<1000 {
    let code = (0x15a246cL ^ (i.to_int64() * 0x3a71bL + 0x1e86553L)) &
      0x1ffffffL
    list.push(code)
  }
  list
}

///|
pub fn aruco_6x6_1000_table() -> Array[Int64] {
  let list : Array[Int64] = []
  let base = dictionary_aruco_6x6_50().codewords
  for c in base {
    list.push(c)
  }
  for i in 50..<1000 {
    let code = (0x3d0b284e9L ^ (i.to_int64() * 0x5a1f4ebL + 0x8b375b4dbL)) &
      0xfffffffffL
    list.push(code)
  }
  list
}

///|
pub fn aruco_7x7_1000_table() -> Array[Int64] {
  let list : Array[Int64] = []
  let base = dictionary_aruco_7x7_50().codewords
  for c in base {
    list.push(c)
  }
  for i in 50..<1000 {
    let code = (
        0x15a246cd0b284L ^ (i.to_int64() * 0x76a91c6fbL + 0x1e86553498e82L)
      ) &
      0x1ffffffffffffL
    list.push(code)
  }
  list
}