code: def CSWAP(control, target_1, target_2):
      
      qubits = [unpack_qubit(q) for q in (control, target_1, target_2)]
      return Gate(name="CSWAP", params=[], qubits=qubits)
docs: Produces a controlled-SWAP gate. This gate conditionally swaps the state of two qubits::
  
          CSWAP = [[1, 0, 0, 0, 0, 0, 0, 0],
                   [0, 1, 0, 0, 0, 0, 0, 0],
                   [0, 0, 1, 0, 0, 0, 0, 0],
                   [0, 0, 0, 1, 0, 0, 0, 0],
                   [0, 0, 0, 0, 1, 0, 0, 0],
                   [0, 0, 0, 0, 0, 0, 1, 0],
                   [0, 0, 0, 0, 0, 1, 0, 0],
                   [0, 0, 0, 0, 0, 0, 0, 1]]
  
  
      :param control: The control qubit.
      :param target-1: The first target qubit.
      :param target-2: The second target qubit. The two target states are swapped if the control is
          in the ``|1>`` state.