Periphery#_swapPTsForTarget won't work correctly if PT is mature but redeem is restricted
Periphery#_swapPTsForTarget doesn't properly account for mature PTs that have their redemption restricted\\nPeriphery.sol#L531-L551\\n```\\nfunction _swapPTsForTarget(\\n    address adapter,\\n    uint256 maturity,\\n    uint256 ptBal,\\n    PermitData calldata permit\\n) internal returns (uint256 tBal) {\\n    _transferFrom(permit, divider.pt(adapter, maturity), ptBal);\\n\\n    if (divider.mscale(adapter, maturity) > 0) {\\n        tBal = divider.redeem(adapter, maturity, ptBal); <- @audit-issue always tries to redeem even if restricted\\n    } else {\\n        tBal = _balancerSwap(\\n            divider.pt(adapter, maturity),\\n            Adapter(adapter).target(),\\n            ptBal,\\n            BalancerPool(spaceFactory.pools(adapter, maturity)).getPoolId(),\\n            0,\\n            payable(address(this))\\n        );\\n    }\\n}\\n```\\n\\nAdapters can have their redeem restricted meaning the even when they are mature they can't be redeemed. In the scenario that it is restricted Periphery#_swapPTsForTarget simply won't work.
Use the same structure as _removeLiquidity:\\n```\\n    if (divider.mscale(adapter, maturity) > 0) {\\n        if (uint256(Adapter(adapter).level()).redeemRestricted()) {\\n            ptBal = _ptBal;\\n        } else {\\n            // 2. Redeem PTs for Target\\n            tBal += divider.redeem(adapter, maturity, _ptBal);\\n        }\\n```\\n
Redemption will fail when redeem is restricted because it tries to redeem instead of swapping
```\\nfunction _swapPTsForTarget(\\n    address adapter,\\n    uint256 maturity,\\n    uint256 ptBal,\\n    PermitData calldata permit\\n) internal returns (uint256 tBal) {\\n    _transferFrom(permit, divider.pt(adapter, maturity), ptBal);\\n\\n    if (divider.mscale(adapter, maturity) > 0) {\\n        tBal = divider.redeem(adapter, maturity, ptBal); <- @audit-issue always tries to redeem even if restricted\\n    } else {\\n        tBal = _balancerSwap(\\n            divider.pt(adapter, maturity),\\n            Adapter(adapter).target(),\\n            ptBal,\\n            BalancerPool(spaceFactory.pools(adapter, maturity)).getPoolId(),\\n            0,\\n            payable(address(this))\\n        );\\n    }\\n}\\n```\\n