<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def connect(self, their_unl, events, force_master=1, hairpin=1,
 nonce="0" * 64):

 """
 A new thread is spawned because many of the connection techniques
 rely on sleep to determine connection outcome or to synchronise hole
 punching techniques. If the sleep is in its own thread it won't
 block main execution.
 """

        parms = (their_unl, events, force_master, hairpin, nonce)
        t = Thread(target=self.connect_handler, args=parms)
        t.start()
        self.unl_threads.append(t)