
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | ||||||||||||||||||||||||||||||||||
| Market cap | $140,289 | $122,652 | $158,582 | $154,189 | $128,868 | $109,051 | $143,870 | $136,057 | $138,658 | $121,267 | $103,162 | $116,370 | $138,737 | $117,341 | $114,869 | $119,519 | $142,848 | $123,588 | $186,287 | $164,917 | $148,309 | $132,168 | $115,055 | $93,346 | $95,747 | $105,498 | $33,845 | $24,373 | $27,305 | $19,316 | $15,904 | $13,652 | $11,995 | $8,770 |
| Enterprise value | $174,816 | $146,255 | $175,724 | $176,221 | $161,697 | $152,967 | $177,790 | $160,405 | $156,997 | $152,003 | $133,570 | $149,980 | $166,760 | $140,586 | $143,271 | $145,160 | $165,422 | $140,798 | $207,232 | $183,998 | $165,154 | $143,951 | $125,165 | $103,326 | $105,594 | $115,929 | $49,525 | $27,970 | $30,680 | $22,052 | $18,573 | $16,205 | $14,303 | $11,479 |
| P/E (TTM) at period end | 10.69× | 7.78× | 7.42× | 7.51× | 8.04× | – | 12.77× | 11.89× | 16.07× | 19.57× | 20.28× | 27.42× | 12.36× | 8.60× | 9.33× | 11.31× | 11.80× | 8.38× | 9.69× | 10.62× | 10.20× | 8.98× | 13.03× | 14.96× | 14.03× | 16.23× | 22.06× | 23.47× | 21.61× | 17.74× | 34.69× | 21.53× | 23.79× | 17.02× |
| P/S (TTM) at period end | 0.70× | 0.57× | 0.67× | 0.55× | 0.63× | 0.78× | 0.72× | 0.65× | 0.93× | 0.95× | 0.72× | 0.49× | 0.55× | 0.46× | 0.62× | 0.75× | 0.89× | 0.55× | 0.93× | 0.94× | 1.07× | 1.02× | 0.87× | 0.87× | 1.02× | 0.98× | 0.80× | 0.85× | 0.86× | 0.57× | 0.57× | 0.53× | 0.52× | 0.35× |
| P/B at period end | 1.22× | 1.04× | 1.36× | 1.38× | 1.15× | 1.05× | 1.23× | 1.18× | 1.24× | 1.23× | 1.12× | 1.29× | 1.38× | 1.25× | 1.72× | 1.98× | 1.90× | 1.81× | 2.84× | 3.10× | 3.08× | 3.12× | 3.01× | 2.76× | 3.17× | 3.46× | 1.19× | 1.97× | 2.41× | 1.65× | 1.45× | 1.37× | 1.33× | 1.05× |
| EV / EBITDA (TTM) | 5.18× | 3.93× | 3.93× | 2.74× | 4.13× | 9.24× | 5.44× | 5.24× | 6.44× | 7.65× | 6.06× | 5.15× | 4.55× | 3.47× | 3.68× | 4.34× | 5.37× | 3.45× | 4.62× | 4.68× | 4.65× | 4.48× | 5.51× | 6.01× | 23.06× | 6.23× | 9.49× | 8.61× | 8.35× | 6.70× | 6.23× | 6.64× | 6.98× | 5.15× |
| EV / Sales (TTM) | 0.87× | 0.68× | 0.74× | 0.63× | 0.79× | 1.09× | 0.89× | 0.77× | 1.05× | 1.19× | 0.93× | 0.64× | 0.66× | 0.55× | 0.78× | 0.91× | 1.03× | 0.63× | 1.04× | 1.05× | 1.19× | 1.11× | 0.95× | 0.96× | 1.12× | 1.07× | 1.16× | 0.98× | 0.97× | 0.65× | 0.67× | 0.63× | 0.62× | 0.46× |
| Returns | ||||||||||||||||||||||||||||||||||
| Return on equity | 11.4% | 13.4% | 18.3% | 18.4% | 14.3% | (7.0%) | 9.6% | 9.9% | 7.7% | 6.3% | 5.5% | 4.7% | 11.2% | 14.5% | 18.4% | 17.5% | 16.1% | 21.6% | 29.3% | 29.2% | 30.2% | 34.8% | 23.1% | 18.5% | 22.6% | 21.3% | 5.4% | 8.4% | 11.2% | 9.3% | 4.2% | 6.3% | 5.6% | 6.2% |
| Return on invested capital | 7.8% | 9.7% | 13.6% | 17.3% | 10.0% | (4.2%) | 7.0% | 7.1% | 4.3% | 3.5% | 1.6% | 2.2% | 7.9% | 10.3% | 14.9% | 14.3% | 11.1% | 16.4% | 20.9% | 19.4% | 21.9% | 23.6% | 18.2% | 12.7% | (0.3%) | 16.8% | 3.9% | 6.9% | 9.6% | 8.3% | 5.0% | 6.3% | 6.0% | 7.0% |
| Dividend yield | 5.8% | 6.3% | 4.7% | 6.5% | 6.4% | 6.1% | 4.6% | 3.6% | 1.9% | 2.2% | 2.8% | 6.3% | 5.1% | 5.7% | 4.5% | 4.3% | 5.1% | 5.6% | 3.5% | 3.2% | 2.8% | 4.0% | 2.9% | 2.9% | – | 1.6% | 2.9% | 2.4% | 1.7% | 0.9% | 1.2% | 1.7% | 1.0% | 3.5% |
| Financial health | ||||||||||||||||||||||||||||||||||
| Current ratio | 0.97× | 1.10× | 1.12× | 1.15× | 1.17× | 1.23× | 1.21× | 1.28× | 1.50× | 1.33× | 1.38× | 1.50× | 1.39× | 1.42× | 1.36× | 1.45× | 1.45× | 1.37× | 1.35× | 1.28× | 1.31× | 1.20× | 1.28× | 1.24× | 1.23× | 1.35× | 1.13× | 1.37× | 1.37× | 1.40× | 1.59× | 1.53× | 1.56× | 1.54× |
| Debt / equity | 0.49× | 0.41× | 0.37× | 0.49× | 0.52× | 0.69× | 0.48× | 0.42× | 0.43× | 0.53× | 0.57× | 0.61× | 0.46× | 0.47× | 0.48× | 0.51× | 0.48× | 0.46× | 0.42× | 0.49× | 0.43× | 0.42× | 0.45× | 0.47× | 0.43× | 0.48× | 0.66× | 0.47× | 0.46× | 0.73× | 0.73× | 0.66× | 0.67× | 0.61× |
| Effective tax rate | 40.5% | 40.2% | 38.2% | 51.4% | 36.9% | (4.5%) | 33.9% | 36.1% | 26.7% | 13.5% | 25.7% | 67.0% | 56.2% | 54.8% | 52.8% | 48.6% | 47.3% | 56.4% | 50.1% | 53.1% | 49.7% | 42.7% | 43.2% | 45.9% | 43.4% | 47.8% | 35.7% | 29.2% | 34.9% | 31.7% | 47.4% | 33.8% | 35.7% | 37.9% |
| Share count | ||||||||||||||||||||||||||||||||||
| Diluted shares outstanding | 2,214 | 2,315 | 2,434 | 2,572 | 2,647 | 2,602 | 2,618 | 2,624 | 2,495 | 2,390 | 2,304 | 2,282 | 2,272 | 2,267 | 2,257 | 2,244 | 2,237 | 2,247 | 2,274 | 2,312 | 2,360 | 2,417 | 2,498 | 2,630 | 2,745 | 2,816 | 977 | 980 | 979 | 960 | 936 | 926 | 885 | 845 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | |||||||||||||||||||||||||||||||||||
| Revenue | $205,703 | $201,196 | $214,550 | $237,128 | $280,999 | $205,863 | $140,685 | $200,316 | $209,363 | $149,099 | $127,925 | $143,421 | $236,122 | $251,725 | $257,037 | $184,693 | $159,269 | $160,687 | $223,197 | $199,490 | $175,123 | $138,642 | $129,127 | $131,568 | $107,698 | $93,870 | $107,890 | $42,566 | $28,507 | $31,720 | $34,062 | $27,696 | $25,612 | $23,037 | $24,732 |
| Cost of revenue | ($136,164) | ($130,497) | ($140,078) | ($156,572) | ($182,099) | – | – | ($116,221) | ($125,816) | ($99,411) | ($83,377) | ($96,671) | ($152,975) | ($173,135) | ($175,465) | ($113,892) | ($93,171) | ($101,808) | ($154,556) | ($128,023) | ($109,984) | ($83,253) | ($76,445) | ($109,257) | ($90,979) | ($78,220) | ($89,928) | ($37,349) | ($25,257) | ($28,044) | ($30,769) | ($24,714) | ($23,171) | ($20,988) | ($22,501) |
| Gross profit | $60,218 | $51,847 | $55,532 | $62,373 | $81,211 | – | – | $84,095 | $83,547 | $49,688 | $44,548 | $46,750 | $83,147 | $54,834 | $58,751 | $70,801 | $66,098 | $58,879 | $68,640 | $71,467 | $65,139 | $55,390 | $52,682 | $22,311 | $16,719 | $15,650 | $17,962 | $5,217 | $3,250 | $3,676 | $3,293 | $2,982 | $2,441 | $2,048 | $2,230 |
| Operating expenses | |||||||||||||||||||||||||||||||||||
| Research and development | – | ($810) | ($805) | ($774) | ($762) | ($824) | ($895) | ($968) | ($986) | ($912) | ($1,050) | ($980) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | ($26,590) | ($25,430) | ($25,784) | – | ($22,717) | – | – | – | – | – | – | – | – | – | – | – | – |
| Total operating expenses | ($33,287) | ($31,922) | ($31,427) | ($31,516) | ($30,658) | – | – | ($67,838) | ($67,530) | ($41,933) | ($39,089) | ($44,056) | ($74,870) | ($31,517) | ($31,650) | ($40,466) | ($41,786) | ($38,266) | ($36,437) | ($35,263) | ($33,178) | ($27,097) | ($29,619) | ($6,257) | ($6,084) | ($15,875) | ($4,576) | ($2,499) | ($1,627) | ($1,506) | ($1,536) | ($1,681) | ($1,244) | ($987) | ($986) |
| Total costs and expenses | ($178,772) | ($181,271) | ($190,445) | ($206,271) | ($230,446) | ($181,041) | ($147,000) | ($184,059) | ($193,346) | ($141,344) | ($122,466) | ($140,727) | ($227,845) | ($228,408) | ($229,936) | ($154,358) | ($134,957) | ($140,074) | ($190,993) | ($163,286) | ($143,163) | ($110,349) | ($106,064) | ($115,514) | ($97,063) | ($94,095) | ($94,504) | ($39,848) | ($26,885) | ($29,550) | ($32,305) | ($26,395) | ($24,414) | ($21,975) | ($23,488) |
| Operating income | $26,931 | $19,925 | $24,105 | $30,857 | $50,553 | $24,822 | ($6,315) | $16,257 | $16,017 | $7,755 | $5,459 | $2,694 | $8,277 | $23,317 | $27,101 | $30,335 | $24,312 | $20,613 | $32,203 | $36,204 | $31,960 | $28,293 | $23,063 | $16,054 | $10,635 | ($225) | $13,386 | $2,718 | $1,622 | $2,170 | $1,756 | $1,301 | $1,198 | $1,062 | $1,244 |
| Earnings | |||||||||||||||||||||||||||||||||||
| EBITDA | $41,438 | $33,772 | $37,212 | $44,675 | $64,233 | $39,165 | $16,546 | $32,658 | $30,601 | $24,366 | $19,882 | $22,028 | $29,136 | $36,675 | $40,567 | $38,963 | $33,429 | $30,795 | $40,830 | $44,887 | $39,291 | $35,498 | $32,114 | $22,723 | $17,190 | $4,579 | $18,623 | $5,217 | $3,250 | $3,676 | $3,293 | $2,982 | $2,441 | $2,048 | $2,230 |
| Interest income | $964 | $2,552 | $3,189 | $3,086 | $2,039 | $1,141 | $951 | $773 | $932 | $819 | $975 | $976 | $929 | $781 | $845 | $882 | $573 | $189 | $1,672 | $1,703 | $1,716 | $1,098 | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Interest expense | ($2,828) | ($4,063) | ($3,851) | ($3,551) | ($2,919) | ($2,443) | ($2,837) | ($3,097) | ($1,927) | ($1,395) | ($1,111) | ($965) | ($748) | ($1,591) | ($1,504) | ($1,142) | ($872) | ($759) | ($1,845) | ($2,130) | ($0) | ($388) | ($179) | ($183) | ($195) | – | – | – | – | – | – | – | – | – | – |
| Pre-tax income | $29,292 | $22,449 | $26,806 | $34,811 | $43,286 | $25,953 | ($7,018) | $17,310 | $18,066 | $11,328 | $7,176 | $6,439 | $12,864 | $26,288 | $30,583 | $26,705 | $21,035 | $23,468 | $34,940 | $39,526 | $34,130 | $28,114 | $27,320 | $15,562 | $11,527 | $12,061 | $12,456 | $2,385 | $1,467 | $1,940 | $1,595 | $871 | $958 | $784 | $829 |
| Income tax expense | ($11,195) | ($9,092) | ($10,775) | ($13,301) | ($22,242) | ($9,587) | ($318) | ($5,872) | ($6,516) | ($3,029) | ($970) | ($1,653) | ($8,614) | ($14,767) | ($16,747) | ($14,091) | ($10,228) | ($11,105) | ($19,693) | ($19,792) | ($18,108) | ($13,983) | ($11,654) | ($6,730) | ($5,287) | ($5,235) | ($5,954) | ($851) | ($429) | ($677) | ($506) | ($412) | ($324) | ($280) | ($314) |
| Net income | $17,821 | $13,127 | $15,758 | $21,384 | $20,526 | $16,032 | ($7,242) | $11,267 | $11,446 | $8,631 | $6,196 | $5,087 | $4,244 | $11,228 | $13,648 | $12,309 | $10,571 | $12,102 | $14,742 | $19,218 | $15,531 | $14,536 | $14,720 | $8,832 | $6,240 | $6,826 | $6,502 | $1,534 | $1,038 | $1,263 | $1,089 | $458 | $634 | $504 | $515 |
| Per share | |||||||||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $7.95 | $5.78 | $6.69 | $8.67 | $7.85 | $5.92 | ($2.90) | $4.17 | $4.24 | $3.34 | $2.51 | $2.16 | $1.86 | $4.94 | $6.02 | $5.45 | $4.71 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Basic EPS (GAAP) | $8.04 | $5.84 | $6.74 | $8.72 | $7.91 | $5.95 | ($2.90) | $4.20 | $4.27 | $3.36 | $2.52 | $2.17 | $1.87 | $4.96 | $6.05 | $5.48 | $4.73 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Basic shares outstanding | 2,203 | 2,191 | 2,298 | 2,417 | 2,555 | 2,631 | 2,602 | 2,602 | 2,607 | 2,482 | 2,379 | 2,295 | 2,270 | 2,264 | 2,256 | 2,247 | 2,235 | 2,231 | 2,235 | 2,255 | 2,293 | 2,347 | 2,407 | 2,488 | 2,611 | 2,726 | 2,816 | 977 | 980 | 979 | 960 | 936 | 926 | 885 | 845 |
| Margins | |||||||||||||||||||||||||||||||||||
| Gross margin | 29.3% | 25.8% | 25.9% | 26.3% | 28.9% | – | – | 42.0% | 39.9% | 33.3% | 34.8% | 32.6% | 35.2% | 21.8% | 22.9% | 38.3% | 41.5% | 36.6% | 30.8% | 35.8% | 37.2% | 40.0% | 40.8% | 17.0% | 15.5% | 16.7% | 16.6% | 12.3% | 11.4% | 11.6% | 9.7% | 10.8% | 9.5% | 8.9% | 9.0% |
| Operating margin | 13.1% | 9.9% | 11.2% | 13.0% | 18.0% | 12.1% | (4.5%) | 8.1% | 7.7% | 5.2% | 4.3% | 1.9% | 3.5% | 9.3% | 10.5% | 16.4% | 15.3% | 12.8% | 14.4% | 18.1% | 18.3% | 20.4% | 17.9% | 12.2% | 9.9% | (0.2%) | 12.4% | 6.4% | 5.7% | 6.8% | 5.2% | 4.7% | 4.7% | 4.6% | 5.0% |
| Net margin | 8.7% | 6.5% | 7.3% | 9.0% | 7.3% | 7.8% | (5.1%) | 5.6% | 5.5% | 5.8% | 4.8% | 3.5% | 1.8% | 4.5% | 5.3% | 6.7% | 6.6% | 7.5% | 6.6% | 9.6% | 8.9% | 10.5% | 11.4% | 6.7% | 5.8% | 7.3% | 6.0% | 3.6% | 3.6% | 4.0% | 3.2% | 1.7% | 2.5% | 2.2% | 2.1% |