pragma solidity ^0.8.0;

contract Escrow{
    address agent;
    mapping(address => uint256) public deposits;
    
    modifier onlyAgent(){
        require(msg.sender == agent);
        _;
    }
    
    constructor() public{
        agent = msg.sender;
    }
    
    function deposit
    (address payee ) public onlyAgent payable{
        uint256 amount = msg.value;
        deposits[payee] = deposits[payee] +amount;
    }
    
    function withdraw(address payable payee) public onlyAgent{
        uint256 payment = deposits[payee];
        deposits[payee] = 0;
        payee.transfer(payment);
    }
}