In `Operator._transfer()`, `onDelegate()` should be called after updating the token balances
In `_transfer()`, `onDelegate()` is called to validate the owner's `minimumSelfDelegationFraction` requirement.\\n```\\nFile: contracts\\OperatorTokenomics\\Operator.sol\\n        // transfer creates a new delegator: check if the delegation policy allows this "delegation"\\n        if (balanceOf(to) == 0) {\\n            if (address(delegationPolicy) != address(0)) {\\n                moduleCall(address(delegationPolicy), abi.encodeWithSelector(delegationPolicy.onDelegate.selector, to)); //@audit\\nshould be called after _transfer()\\n            }\\n        }\\n        super._transfer(from, to, amount);\\n```\\n\\nBut `onDelegate()` is called before updating the token balances and the below scenario would be possible.\\nThe operator owner has 100 shares(required minimum fraction). And there are no undelegation policies.\\nLogically, the owner shouldn't be able to transfer his 100 shares to a new delegator due to the min fraction requirement in `onDelegate()`.\\nBut if the owner calls `transfer(owner, to, 100)`, `balanceOf(owner)` will be 100 in `onDelegation()` and it will pass the requirement because it's called before `super._transfer()`.
`onDelegate()` should be called after `super._transfer()`.
The operator owner might transfer his shares to other delegators in anticipation of slashing, to avoid slashing.
```\\nFile: contracts\\OperatorTokenomics\\Operator.sol\\n        // transfer creates a new delegator: check if the delegation policy allows this "delegation"\\n        if (balanceOf(to) == 0) {\\n            if (address(delegationPolicy) != address(0)) {\\n                moduleCall(address(delegationPolicy), abi.encodeWithSelector(delegationPolicy.onDelegate.selector, to)); //@audit\\nshould be called after _transfer()\\n            }\\n        }\\n        super._transfer(from, to, amount);\\n```\\n