Vault Fee uses incorrect offset leading to wildly incorrect value, allowing strategists to steal all funds
`VAULT_FEE()` uses an incorrect offset, returning a number ~1e16X greater than intended, providing strategists with unlimited access to drain all vault funds.\\nWhen using ClonesWithImmutableArgs, offset values are set so that functions representing variables can retrieve the correct values from storage.\\nIn the ERC4626-Cloned.sol implementation, `VAULT_TYPE()` is given an offset of 172. However, the value before it is a `uint8` at the offset 164. Since a `uint8` takes only 1 byte of space, `VAULT_TYPE()` should have an offset of 165.\\nI put together a POC to grab the value of `VAULT_FEE()` in the test setup:\\n```\\nfunction testVaultFeeIncorrectlySet() public {\\n  Dummy721 nft = new Dummy721();\\n  address tokenContract = address(nft);\\n  uint256 tokenId = uint256(1);\\n  address publicVault = _createPublicVault({\\n      strategist: strategistOne,\\n      delegate: strategistTwo,\\n      epochLength: 14 days\\n  });\\n  uint fee = PublicVault(publicVault).VAULT_FEE();\\n  console.log(fee)\\n  assert(fee == 5000); // 5000 is the value that was meant to be set\\n}\\n```\\n\\nIn this case, the value returned is > 3e20.
Set the offset for `VAULT_FEE()` to 165. I tested this value in the POC I created and it correctly returned the value of 5000.
This is a highly critical bug. `VAULT_FEE()` is used in `_handleStrategistInterestReward()` to determine the amount of tokens that should be allocated to `strategistUnclaimedShares`.\\n```\\nif (VAULT_FEE() != uint256(0)) {\\n    uint256 interestOwing = LIEN_TOKEN().getInterest(lienId);\\n    uint256 x = (amount > interestOwing) ? interestOwing : amount;\\n    uint256 fee = x.mulDivDown(VAULT_FEE(), 1000); //VAULT_FEE is a basis point\\n    strategistUnclaimedShares += convertToShares(fee);\\n  }\\n```\\n\\nThe result is that strategistUnclaimedShares will be billions of times higher than the total interest generated, essentially giving strategist access to withdraw all funds from their vaults at any time.
```\\nfunction testVaultFeeIncorrectlySet() public {\\n  Dummy721 nft = new Dummy721();\\n  address tokenContract = address(nft);\\n  uint256 tokenId = uint256(1);\\n  address publicVault = _createPublicVault({\\n      strategist: strategistOne,\\n      delegate: strategistTwo,\\n      epochLength: 14 days\\n  });\\n  uint fee = PublicVault(publicVault).VAULT_FEE();\\n  console.log(fee)\\n  assert(fee == 5000); // 5000 is the value that was meant to be set\\n}\\n```\\n