Adversary can break deposit queue and cause loss of funds
Carousel.sol#L531-L538\\n```\\nfunction _mintShares(\\n    address to,\\n    uint256 id,\\n    uint256 amount\\n) internal {\\n    _mint(to, id, amount, EMPTY);\\n    _mintEmissions(to, id, amount);\\n}\\n```\\n\\nWhen processing deposits for the deposit queue, it _mintShares to the specified receiver which makes a _mint subcall.\\nERC1155.sol#L263-L278\\n```\\nfunction _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\\n    require(to != address(0), "ERC1155: mint to the zero address");\\n\\n    address operator = _msgSender();\\n    uint256[] memory ids = _asSingletonArray(id);\\n    uint256[] memory amounts = _asSingletonArray(amount);\\n\\n    _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n    _balances[id][to] += amount;\\n    emit TransferSingle(operator, address(0), to, id, amount);\\n\\n    _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n    _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n}\\n```\\n\\nThe base ERC1155 _mint is used which always behaves the same way that ERC721 safeMint does, that is, it always calls _doSafeTrasnferAcceptanceCheck which makes a call to the receiver. A malicious user can make the receiver always revert. This breaks the deposit queue completely. Since deposits can't be canceled this WILL result in loss of funds to all users whose deposits are blocked. To make matters worse it uses first in last out so the attacker can trap all deposits before them
Override _mint to remove the safeMint behavior so that users can't DOS the deposit queue
Users who deposited before the adversary will lose their entire deposit
```\\nfunction _mintShares(\\n    address to,\\n    uint256 id,\\n    uint256 amount\\n) internal {\\n    _mint(to, id, amount, EMPTY);\\n    _mintEmissions(to, id, amount);\\n}\\n```\\n