Factory contract implementation
1. Functions
1.1. constructor
  function constructor(
    address _controller, 
    address _weth9,
    address _uniV3Factory, 
    address _uniV3Router
  ) public
Parameters:
| Name | 
Type | 
Description | 
_controller | 
address | 
The controller address | 
_weth9 | 
address | 
The weth9 address | 
_uniV3Router | 
address | 
The Uniswap V3 Factory address | 
_uniV3Factory | 
address | 
The Uniswap V3 Router address | 
1.2. getFund
  function getFund(
    address manager,
    address token,
    uint256 lockPeriod,
    uint256 baseLine,
    uint256 managerFee
  ) external returns (address fund)
Returns the fund address for a given manager and a token, or address 0 if it does not exist
a manager+token mapping a fund
Parameters:
| Name | 
Type | 
Description | 
manager | 
address | 
The address of the manager who manages the fund | 
token | 
address | 
Managed token | 
lockPeriod | 
uint256 | 
Fund lock-up period | 
baseLine | 
uint256 | 
Fund manager fee baseline | 
managerFee | 
uint256 | 
Fund manager fee ratio | 
Return Values:
| Name | 
Type | 
Description | 
fund | 
address | 
Fund address | 
1.3. createFund
  function createFund(
    address token,
    bytes descriptor,
    uint256 lockPeriod,
    uint256 baseLine,
    uint256 managerFee
  ) external returns (address fund)
Creates a fund for the given manager and token
Parameters:
| Name | 
Type | 
Description | 
token | 
address | 
Managed token | 
descriptor | 
bytes | 
Fund name + description | 
lockPeriod | 
uint256 | 
Fund lock-up period | 
baseLine | 
uint256 | 
The fund manager fee baseline. If the ROI is higher than this baseline, the user will be charged when withdrawing | 
managerFee | 
uint256 | 
When the ROI is greater than the baseline, the fund manager’s fee ratio | 
Return Values:
| Name | 
Type | 
Description | 
fund | 
address | 
Fund address |