code: func splitNetworks(list []*NetworkToSplit) ([]*net.IPNet, error) {
  	localPools := make([]*net.IPNet, 0, len(list))
  
  	for _, p := range list {
  		_, b, err := net.ParseCIDR(p.Base)
  		if err != nil {
  			return nil, fmt.Errorf("invalid base pool %q: %v", p.Base, err)
  		}
  		ones, _ := b.Mask.Size()
  		if p.Size <= 0 || p.Size < ones {
  			return nil, fmt.Errorf("invalid pools size: %d", p.Size)
  		}
  		localPools = append(localPools, splitNetwork(p.Size, b)...)
  	}
  	return localPools, nil
  }
docs: // splitNetworks takes a slice of networks, split them accordingly and returns them