Upon initialization of the kMC, the KMC.run() function is called to perform the kMC simulation by supplying the total number of equilibration and sampling steps, respectively. The equilibration steps are not explicitly shown in Fig. . A Tracker object is initialized once the equilibration process is complete (see Sec. III F). As shown in Fig. , for each kMC step, an event k is randomly proposed using KMC.propose(), based on Eq. 12.