old_contents: 
  
  def get_axis_by_schema_id(schema_id, init, rotate=0, symmetry=False):
      res = []
      for item in _schemas[int(schema_id)]:
          for i in range(2):
              _symmetry(item, symmetry)
              rs = _rotate(item, rotate)
              res.append([init[0] - rs[0], init[1] + rs[1]])
      return res
  
  
  _schemas = [
      [(0, 0)],
      [(0, 0), (0, 1)],
      [(0, 0), (0, 1), (0, 2)],
      [(0, 0), (0, 1), (1, 1)],
      [(0, 0), (0, 1), (0, 2), (0, 3)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (0, 2), (1, 1)],
      [(0, 0), (0, 1), (1, 1), (1, 0)],
      [(0, 0), (0, 1), (1, 2), (1, 1)],
      [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2), (1, 3)],
      [(0, 0), (1, 0), (1, 1), (1, 2), (1, 3)],
      [(0, 0), (0, 1), (1, 0), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (2, 0), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2), (0, 2)],
      [(0, 0), (0, 1), (0, 2), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (1, 2)],
  
      [(0, 0), (0, 1), (1, 1), (-1, 1), (0, 2)],
  ]
  
  _rotates = [
      [(1, 0), (0, 1)],
      [(0, 1), (-1, 0)],
      [(-1, 0), (0, -1)],
      [(0, -1), (1, 0)],
  ]
  
  
  def _symmetry(item, is_symmetry):
      if is_symmetry:
          item[1] = -item[1]
  
  
  def _rotate(item, index):
      rs = [0, 0]
      for i in range(2):
          rs[i] = \
              item[0] * _rotates[index][i][0] + item[1] * _rotates[index][i][1]
      return rs
  
new_contents: 
  
  def get_axis_by_schema_id(schema_id, init, rotate=0, symmetry=False):
      res = []
      for item in _schemas[int(schema_id)]:
          for i in range(2):
              item = _symmetry(item, symmetry)
              rs = _rotate(item, rotate)
              res.append([init[0] - rs[0], init[1] + rs[1]])
      return res
  
  
  _schemas = [
      [(0, 0)],
      [(0, 0), (0, 1)],
      [(0, 0), (0, 1), (0, 2)],
      [(0, 0), (0, 1), (1, 1)],
      [(0, 0), (0, 1), (0, 2), (0, 3)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (0, 2), (1, 1)],
      [(0, 0), (0, 1), (1, 1), (1, 0)],
      [(0, 0), (0, 1), (1, 2), (1, 1)],
      [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2), (1, 3)],
      [(0, 0), (1, 0), (1, 1), (1, 2), (1, 3)],
      [(0, 0), (0, 1), (1, 0), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (2, 0), (1, 1), (1, 2)],
      [(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)],
  
      [(0, 0), (0, 1), (1, 1), (1, 2), (0, 2)],
      [(0, 0), (0, 1), (0, 2), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (2, 2)],
      [(0, 0), (0, 1), (1, 1), (1, 2), (1, 2)],
  
      [(0, 0), (0, 1), (1, 1), (-1, 1), (0, 2)],
  ]
  
  _rotates = [
      [(1, 0), (0, 1)],
      [(0, 1), (-1, 0)],
      [(-1, 0), (0, -1)],
      [(0, -1), (1, 0)],
  ]
  
  
  def _symmetry(item, is_symmetry):
      if is_symmetry:
          return [item[0], -item[1]]
  
  
  def _rotate(item, index):
      rs = [0, 0]
      for i in range(2):
          rs[i] = \
              item[0] * _rotates[index][i][0] + item[1] * _rotates[index][i][1]
      return rs
  
subject: fix _schema bugs