{
  "about": "QR.v2 layout specifications.",
  "qr_version": 2,
  "side_length": 25,
  "byte_capacity": 44,
  "error_correction_bytes": {
    "L": 10,
    "M": 16,
    "Q": 22,
    "H": 28
  },
  "fixed_positions": {
    "_comment_a": "The 'zeros' key contains a list of [row, col] positions",
    "_comment_b": "that must be 0 (white), and the 'ones' key contains a",
    "_comment_c": "list of [row, col] positions that must be 1 (black) in",
    "_comment_d": "a QR.v2 code. This is used by the QR reader to locate",
    "_comment_e": "the QR code and apply perspective adjustments.",
    "zeros": [
      [0, 7], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 7], [2, 1], [2, 5],
      [2, 7], [3, 1], [3, 5], [3, 7], [4, 1], [4, 5], [4, 7], [5, 1], [5, 2],
      [5, 3], [5, 4], [5, 5], [5, 7], [6, 7], [7, 0], [7, 1], [7, 2], [7, 3],
      [7, 4], [7, 5], [7, 6], [7, 7], [0, 17], [1, 17], [1, 19], [1, 20],
      [1, 21], [1, 22], [1, 23], [2, 17], [2, 19], [2, 23], [3, 17], [3, 19],
      [3, 23], [4, 17], [4, 19], [4, 23], [5, 17], [5, 19], [5, 20], [5, 21],
      [5, 22], [5, 23], [6, 17], [7, 17], [7, 18], [7, 19], [7, 20], [7, 21],
      [7, 22], [7, 23], [7, 24], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4],
      [17, 5], [17, 6], [17, 7], [18, 7], [19, 1], [19, 2], [19, 3], [19, 4],
      [19, 5], [19, 7], [20, 1], [20, 5], [20, 7], [21, 1], [21, 5], [21, 7],
      [22, 1], [22, 5], [22, 7], [23, 1], [23, 2], [23, 3], [23, 4], [23, 5],
      [23, 7], [24, 7], [6, 9], [6, 11], [6, 13], [6, 15], [9, 6], [11, 6],
      [13, 6], [15, 6], [17, 17], [17, 18], [17, 19], [18, 17], [18, 19],
      [19, 17], [19, 18], [19, 19]
    ],
    "ones": [
      [0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 0], [1, 6],
      [2, 0], [2, 2], [2, 3], [2, 4], [2, 6], [3, 0], [3, 2], [3, 3], [3, 4],
      [3, 6], [4, 0], [4, 2], [4, 3], [4, 4], [4, 6], [5, 0], [5, 6], [6, 0],
      [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [0, 18], [0, 19],
      [0, 20], [0, 21], [0, 22], [0, 23], [0, 24], [1, 18], [1, 24], [2, 18],
      [2, 20], [2, 21], [2, 22], [2, 24], [3, 18], [3, 20], [3, 21], [3, 22],
      [3, 24], [4, 18], [4, 20], [4, 21], [4, 22], [4, 24], [5, 18], [5, 24],
      [6, 18], [6, 19], [6, 20], [6, 21], [6, 22], [6, 23], [6, 24], [18, 0],
      [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [19, 0], [19, 6],
      [20, 0], [20, 2], [20, 3], [20, 4], [20, 6], [21, 0], [21, 2], [21, 3],
      [21, 4], [21, 6], [22, 0], [22, 2], [22, 3], [22, 4], [22, 6], [23, 0],
      [23, 6], [24, 0], [24, 1], [24, 2], [24, 3], [24, 4], [24, 5], [24, 6],
      [6, 8], [6, 10], [6, 12], [6, 14], [6, 16], [8, 6], [10, 6], [12, 6],
      [14, 6], [16, 6], [16, 16], [16, 17], [16, 18], [16, 19], [16, 20],
      [17, 16], [17, 20], [18, 16], [18, 18], [18, 20], [19, 16], [19, 20],
      [20, 16], [20, 17], [20, 18], [20, 19], [20, 20], [17, 8]
    ]
  },
  "meta_positions": {
    "_comment_a": "The meta positions are where the QR matrix contains its",
    "_comment_b": "meta patterns. The meta pattern is repeated twice: once",
    "_comment_c": "in each of the positions given by 'first' and 'second'.",
    "first": [
      [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 7], [8, 8], [7, 8],
      [5, 8], [4, 8], [3, 8], [2, 8], [1, 8], [0, 8]
    ],
    "second": [
      [24, 8], [23, 8], [22, 8], [21, 8], [20, 8], [19, 8], [18, 8], [8, 17],
      [8, 18], [8, 19], [8, 20], [8, 21], [8, 22], [8, 23], [8, 24]
    ]
  },
  "meta_patterns": {
    "_comment_a": "A meta pattern indicates which level of error correction",
    "_comment_b": "is used (L, M, Q or H) and which mask (0-7) is applied",
    "_comment_c": "to the data field. The selected pattern should be placed",
    "_comment_d": "in the QR matrix in the meta positions described above.",
    "L": [
      [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0],
      [1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1],
      [1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
      [1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1],
      [1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1],
      [1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0],
      [1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1],
      [1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0]
    ],
    "M": [
      [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0],
      [1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1],
      [1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0],
      [1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1],
      [1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1],
      [1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0],
      [1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1],
      [1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]
    ],
    "Q": [
      [0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1],
      [0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0],
      [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1],
      [0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0], 
      [0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0],
      [0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1],
      [0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0],
      [0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1]
    ],
    "H": [
      [0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1],
      [0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0],
      [0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1],
      [0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0],
      [0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0],
      [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1],
      [0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1]
    ]
  }
}