Summary of Significant Accounting Policies (Tables)
|
12 Months Ended |
Dec. 31, 2024 |
Accounting Policies [Abstract] |
|
Schedule of Other Receivables |
|
|
|
|
|
|
|
|
|
|
|
As of |
|
|
|
December 31, 2024 |
|
|
December 31, 2023 |
|
Payroll tax withholding and exercise proceeds receivable |
|
$ |
834 |
|
|
$ |
— |
|
Construction receivable |
|
|
4,584 |
|
|
|
6,480 |
|
Income tax receivable |
|
|
1,864 |
|
|
|
3,051 |
|
Insurance receivable |
|
|
4,250 |
|
|
|
3,686 |
|
Other |
|
|
1,986 |
|
|
|
1,497 |
|
Total other receivables |
|
$ |
13,518 |
|
|
$ |
14,714 |
|
|
Schedule of Inventory |
Inventory for the periods presented is as follows:
|
|
|
|
|
|
|
|
|
|
|
As of |
|
|
|
December 31, 2024 |
|
|
December 31, 2023 |
|
Chemical washing solutions |
|
$ |
5,831 |
|
|
$ |
9,135 |
|
Other |
|
|
14 |
|
|
|
- |
|
Total inventory, gross |
|
|
5,845 |
|
|
|
9,135 |
|
Reserve for obsolescence |
|
|
(117 |
) |
|
|
(183 |
) |
Total inventory, net |
|
$ |
5,728 |
|
|
$ |
8,952 |
|
|
Schedule of Composition of Revenue |
The following table summarizes the composition of our net revenues for the periods presented:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Year Ended December 31, |
|
|
|
2024 |
|
|
2023 |
|
|
2022 |
|
Recognized over time |
|
$ |
734,235 |
|
|
$ |
659,612 |
|
|
$ |
593,067 |
|
Recognized at a point in time |
|
|
260,034 |
|
|
|
267,067 |
|
|
|
282,424 |
|
Other revenue |
|
|
458 |
|
|
|
391 |
|
|
|
1,015 |
|
Net revenues |
|
$ |
994,727 |
|
|
$ |
927,070 |
|
|
$ |
876,506 |
|
|
Schedule of Reconciliations of Numerators and Denominators of Basic and Diluted Earnings Per Share |
Reconciliations of the numerators and denominators of the basic and diluted earnings per share calculations for the periods presented are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Year Ended December 31, |
|
|
|
2024 |
|
|
2023 |
|
|
2022 |
|
Numerator: |
|
|
|
|
|
|
|
|
|
Net income |
|
$ |
70,239 |
|
|
$ |
80,130 |
|
|
$ |
112,900 |
|
|
|
|
|
|
|
|
|
|
|
Denominator: |
|
|
|
|
|
|
|
|
|
Weighted-average common shares outstanding - basic |
|
|
320,031,984 |
|
|
|
311,035,122 |
|
|
|
303,372,095 |
|
Effect of potentially dilutive securities: |
|
|
|
|
|
|
|
|
|
Stock options |
|
|
7,694,810 |
|
|
|
16,778,290 |
|
|
|
23,617,488 |
|
Restricted stock units |
|
|
1,764,137 |
|
|
|
396,177 |
|
|
|
555,495 |
|
Employee stock purchase plan |
|
|
22,301 |
|
|
|
30,015 |
|
|
|
15,329 |
|
Weighted-average common shares outstanding - diluted |
|
|
329,513,232 |
|
|
|
328,239,604 |
|
|
|
327,560,407 |
|
|
|
|
|
|
|
|
|
|
|
Earnings per share - basic |
|
$ |
0.22 |
|
|
$ |
0.26 |
|
|
$ |
0.37 |
|
Earnings per share - diluted |
|
$ |
0.21 |
|
|
$ |
0.24 |
|
|
$ |
0.34 |
|
|
Schedule of Antidilutive Shares Excluded from Computation of Diluted Earnings Per Share |
The following potentially dilutive shares were excluded from the computation of diluted earnings per share for the periods presented because including them would have been antidilutive:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Year Ended December 31, |
|
|
|
2024 |
|
|
2023 |
|
|
2022 |
|
Stock options |
|
|
4,480,312 |
|
|
|
3,457,404 |
|
|
|
2,204,216 |
|
Restricted stock units |
|
|
350,326 |
|
|
|
184,619 |
|
|
|
62,140 |
|
Employee stock purchase plan |
|
|
49,859 |
|
|
|
53,408 |
|
|
|
49,645 |
|
|