XML 24 R16.htm IDEA: XBRL DOCUMENT
v3.24.1.u1

Net Income Per Share | 3 Months Ended
--- | ---
Mar. 31, 2024
Earnings Per Share [Abstract] |
Net Income Per Share | Net Income Per Share Basic net income per share is computed by dividing net income for the period by the weighted-average number of shares outstanding during the period, including repurchases carried as treasury stock. Diluted net income per share is computed by dividing net income by the weighted-average number of shares outstanding adjusted for the dilutive effect of all potential shares of stock, including the exercise of employee stock options and assumed vesting of restricted stock units (if dilutive). Diluted net income per share was computed using the treasury stock method for warrants, stock options, and restricted stock units. The following table presents the calculation of basic and diluted net income per share:
| For the three months ended March 31, |  |
| 2024 | 2023 |  |  |
Numerator: |  |  |  |  |
Net income | $ | 8,007,005 |  | $ | 1,724,546 |  |  |  |
Denominator*: |  |  |  |  |
Basic shares: |  |  |  |  |
Weighted-average shares outstanding | 5,660,199 |  | 5,480,673 |  |  |  |
Diluted shares: |  |  |  |  |
Stock options | 87,178 |  | 67,741 |  |  |  |
Restricted stock units | 173,457 |  | — |  |  |  |
Warrants | 39,934 |  | 8,416 |  |  |  |
Weighted-average shares outstanding | 5,960,768 |  | 5,556,830 |  |  |  |
Net income per share: |  |  |  |  |
Basic | $ | 1.41 |  | $ | 0.31 |  |  |  |
Diluted | $ | 1.34 |  | $ | 0.31 |  |  |  |
*Effective May 11, 2023, we performed a 1-for-38 reverse stock split. Share amounts have been retroactively restated. Because their effect would have been anti-dilutive, 85,741 and 228,281 shares were excluded from the denominator of diluted net income per share for the three months ended March 31, 2024 and 2023, respectively.

X
- References No definition available. + Details
Name: | us-gaap_EarningsPerShareAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition The entire disclosure for earnings per share. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org//260/tableOfContent Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482662/260-10-50-2 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482662/260-10-50-3 + Details
Name: | us-gaap_EarningsPerShareTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration