The Liquidity Mining program distributes $IDLE through the
IdleController contract, which computes the utility generated by each BY strategy (idleDAI, idleUSDC, ...) and proportionally allocates the $IDLE rewards between all these pools.
To compute the utility generated by each strategy, the IdleController uses a
PriceOracle which reads data such as WBTC or COMP price (in USD) and uses it to compute the correct share of LM program distribution for each pool.
To update the distribution speeds, and effectively adjust the IDLE distribution for the strategies depending on current TVL and APYs, the public method
refreshIdleSpeeds should be called from time to time.