code: def _split_one_shard_to_multiple(client, project, logstore, shard_info, count, current_shard_count):
      
      distance = shard_info['length'] // count
      if distance <= 0 or count <= 1:
          return [shard_info['info']], 0
  
      rw_shards, increased_shard_count = {shard_info['id']: shard_info['info']}, 0
      for x in range(1, count):
          new_hash = shard_info['start'] + distance * x
          new_hash = hex(new_hash)[2:].strip('lL')
          new_hash = '0' * (TOTAL_HASH_LENGTH - len(new_hash)) + new_hash
          try:
              if x == 1:
                  res = client.split_shard(project, logstore, shard_info['id'], new_hash)
              else:
                  res = client.split_shard(project, logstore, current_shard_count - 1, new_hash)
  
              # new rw_shards
              for shard in res.shards:
                  if shard['status'] == 'readonly':
                      del rw_shards[shard['shardID']]
                  else:
                      rw_shards[shard['shardID']] = shard
  
              current_shard_count += res.count - 1
              increased_shard_count += res.count - 1
              logger.info("split shard: project={0}, logstore={1}, shard_info={2}, count={3}, current_shard_count={4}".format(project, logstore, shard_info, count, current_shard_count))
          except Exception as ex:
              print(ex)
              print(x, project, logstore, shard_info, count, current_shard_count)
              raise
  
      return rw_shards.values(), increased_shard_count
docs: return new_rw_shards_list, increased_shard_count