
| 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 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | |||||||||||||||||||||||||||||||||||||||||
| Market cap | $108,916 | $143,610 | $176,500 | $151,190 | $229,954 | $239,412 | $205,464 | $155,572 | $182,985 | $164,573 | $137,582 | $135,541 | $123,265 | $88,950 | $56,945 | $53,283 | $48,591 | $49,931 | $56,569 | $89,175 | $85,406 | $100,687 | $99,235 | $39,241 | $51,258 | $37,524 | $35,927 | $21,141 | $10,622 | $4,344 | $4,359 | $3,515 | $4,755 | $2,600 | $1,972 | $1,558 | $1,933 | $737 | $688 | $522 | $293 |
| Enterprise value | $210,113 | $235,837 | $280,012 | $246,706 | $322,293 | $337,723 | $306,786 | $264,296 | $244,937 | $224,452 | $189,511 | $179,467 | $166,185 | $117,433 | $94,961 | $78,713 | $77,056 | $81,259 | $87,081 | $115,417 | $108,339 | $122,740 | $122,480 | $71,560 | $61,367 | $45,341 | $37,583 | $26,682 | $16,711 | $12,204 | $11,621 | $8,801 | $9,022 | $6,447 | $3,631 | $3,034 | $3,323 | $1,981 | $1,148 | $977 | $305 |
| P/E (TTM) at period end | 5.45× | 8.87× | 11.47× | 28.15× | 16.24× | 22.73× | 15.74× | 13.26× | 8.05× | 18.96× | 16.85× | 16.17× | 18.08× | 14.34× | 13.69× | 14.66× | 13.36× | 19.60× | 21.87× | 35.21× | 92.03× | 103.80× | 30.63× | – | 84.17× | 18.56× | 33.71× | 21.75× | – | – | – | – | – | – | – | – | – | – | – | 521.64× | 20.08× |
| P/S (TTM) at period end | 0.88× | 1.16× | 1.45× | 1.25× | 1.98× | 2.31× | 1.89× | 1.65× | 2.15× | 2.04× | 1.85× | 1.97× | 1.91× | 1.42× | 1.02× | 1.40× | 1.36× | 1.45× | 1.82× | 3.57× | 4.05× | 5.24× | 5.41× | 4.84× | 5.30× | 4.57× | 5.50× | 3.90× | 2.38× | 1.20× | 1.30× | 2.56× | 3.46× | 2.89× | 2.74× | 2.37× | 3.44× | 1.64× | 2.22× | 3.99× | 2.50× |
| P/B at period end | 1.12× | 1.68× | 2.13× | 1.87× | 2.39× | 2.65× | 2.48× | 2.17× | 2.67× | 3.05× | 2.63× | 2.57× | 2.43× | 1.80× | 1.20× | 1.20× | 1.14× | 1.23× | 1.37× | 2.17× | 2.12× | 2.43× | 2.38× | 1.02× | 3.54× | 2.66× | 3.47× | 5.54× | 6.45× | 7.87× | – | – | – | – | 101.14× | – | 11.51× | 3.58× | 2.66× | 2.75× | 2.56× |
| EV / EBITDA (TTM) | 5.70× | 6.19× | 7.44× | 8.85× | 9.31× | 11.04× | 9.00× | 8.80× | 8.70× | 8.55× | 7.68× | 7.83× | 7.75× | 5.88× | 5.17× | 5.82× | 6.07× | 6.19× | 8.15× | 12.05× | 13.01× | 16.47× | 19.16× | 25.23× | 22.72× | 18.35× | 19.99× | 17.83× | 12.92× | 11.66× | 11.41× | 5.14× | 5.26× | 16.24× | 11.74× | 11.19× | 14.85× | 11.20× | – | – | – |
| EV / Sales (TTM) | 1.70× | 1.91× | 2.30× | 2.03× | 2.77× | 3.26× | 2.82× | 2.80× | 2.88× | 2.78× | 2.54× | 2.61× | 2.57× | 1.88× | 1.70× | 2.07× | 2.16× | 2.36× | 2.80× | 4.62× | 5.14× | 6.39× | 6.68× | 8.83× | 6.34× | 5.52× | 5.76× | 4.92× | 3.74× | 3.38× | 3.46× | 6.40× | 6.56× | 7.16× | 5.04× | 4.62× | 5.91× | 4.40× | 3.71× | 7.47× | 2.60× |
| Returns | |||||||||||||||||||||||||||||||||||||||||
| Return on equity | 20.6% | 18.9% | 18.6% | 6.6% | 14.7% | 11.7% | 15.8% | 16.4% | 33.1% | 16.1% | 15.6% | 15.9% | 13.4% | 12.6% | 8.8% | 8.2% | 8.5% | 6.3% | 6.3% | 6.2% | 2.3% | 2.3% | 7.8% | (0.5%) | 4.2% | 14.4% | 10.3% | 25.5% | (14.5%) | (9.7%) | – | – | – | – | (797.9%) | – | (88.6%) | (23.1%) | (3.6%) | 0.5% | 12.8% |
| Return on invested capital | 8.0% | 11.1% | 9.2% | 4.2% | 8.0% | 7.0% | 8.9% | 8.2% | 13.8% | 9.3% | 9.6% | 10.6% | 9.0% | 10.4% | 7.9% | 6.9% | 7.2% | 5.8% | 4.6% | 4.2% | 2.7% | 2.4% | 2.6% | 1.0% | (0.9%) | (0.4%) | 1.8% | 3.7% | 6.0% | – | – | 30.2% | 40.5% | 4.5% | 8.6% | 7.4% | 5.8% | 4.5% | – | 0.3% | 10.8% |
| Dividend yield | 4.5% | 3.4% | 2.7% | 3.1% | 2.0% | 1.7% | 1.8% | 2.2% | 1.6% | 1.6% | 1.8% | 1.7% | 1.6% | 1.8% | 2.1% | 2.0% | 1.6% | 1.1% | – | – | – | – | – | – | – | – | 0.0% | 0.2% | 0.3% | 0.6% | 0.5% | 0.6% | 0.4% | 0.7% | 0.9% | 0.9% | 0.6% | 1.1% | – | – | – |
| Financial health | |||||||||||||||||||||||||||||||||||||||||
| Current ratio | 0.88× | 0.68× | 0.60× | 0.78× | 0.85× | 0.93× | 0.84× | 0.79× | 0.74× | 0.76× | 0.68× | 0.78× | 0.74× | 1.20× | 0.65× | 1.08× | 0.44× | 0.42× | 0.46× | 0.72× | 0.44× | 0.41× | 0.56× | 0.46× | 1.44× | 1.48× | 1.77× | 1.85× | 1.03× | 1.03× | 1.47× | 0.92× | 1.31× | 1.09× | 2.44× | 1.35× | 2.00× | 1.99× | 1.90× | 3.07× | 7.12× |
| Debt / equity | 1.02× | 1.16× | 1.17× | 1.17× | 0.99× | 1.15× | 1.24× | 1.56× | 0.94× | 1.13× | 1.01× | 0.91× | 0.94× | 0.82× | 0.83× | 0.71× | 0.68× | 0.80× | 0.76× | 0.70× | 0.58× | 0.57× | 0.65× | 0.91× | 0.84× | 0.77× | 0.89× | 1.46× | 3.32× | 13.29× | (9.06×) | (6.87×) | (5.09×) | (22.36×) | 91.52× | (72.11×) | 9.13× | 6.55× | 2.48× | 3.71× | 1.75× |
| Effective tax rate | 23.7% | 15.0% | 26.2% | 47.0% | 27.5% | 23.9% | 21.6% | 22.2% | (49.3%) | 37.0% | 37.1% | 31.1% | 35.8% | 32.3% | 37.2% | 39.9% | 28.9% | 37.8% | 41.4% | 37.5% | 50.8% | 46.0% | 11.7% | 23.1% | 67.5% | 41.3% | 48.1% | 37.1% | (62.6%) | 106.2% | 979.1% | – | – | (6.9%) | (9.0%) | 2.6% | (1.3%) | (7.2%) | 354.1% | 92.5% | 37.3% |
| Share count | |||||||||||||||||||||||||||||||||||||||||
| Diluted shares outstanding | 3,709 | 3,908 | 4,148 | 4,430 | 4,654 | 4,624 | 4,610 | 4,640 | 4,786 | 4,875 | 5,035 | 5,240 | 5,330 | 5,434 | 5,556 | 5,640 | 5,770 | 5,904 | 6,384 | 6,360 | 9,936 | 9,110 | 9,110 | 4,993 | 4,338 | 2,810 | 2,353 | 2,356 | 2,000 | 1,477 | 1,463 | 1,373 | 1,177 | 1,209 | 1,060 | 1,067 | 1,002 | 595 | 564 | 617 | 398 |
| 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 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | ||||||||||||||||||||||||||||||||||||||||||
| Revenue | $123,005 | $123,707 | $123,731 | $121,572 | $121,427 | $116,385 | $103,564 | $108,942 | $94,507 | $85,029 | $80,736 | $74,510 | $68,775 | $64,657 | $62,570 | $55,842 | $37,937 | $35,756 | $34,423 | $31,060 | $24,966 | $21,075 | $19,221 | $18,348 | $8,102 | $9,674 | $8,219 | $6,529 | $5,419 | $4,468 | $3,612 | $3,363 | $1,375 | $1,375 | $900 | $721 | $657 | $562 | $450 | $309 | $131 | $117 |
| Cost of revenue | ($37,093) | ($34,951) | ($37,026) | ($36,762) | ($38,213) | ($38,450) | ($33,121) | ($34,440) | ($29,692) | ($25,355) | ($24,348) | ($22,550) | ($20,912) | ($19,670) | ($19,929) | ($16,596) | ($8,537) | ($14,380) | ($13,639) | ($11,175) | ($9,010) | ($7,513) | ($7,036) | ($7,041) | ($3,012) | ($5,420) | ($4,497) | ($3,723) | ($3,146) | ($2,474) | ($2,026) | ($1,704) | – | – | ($276) | ($252) | ($244) | ($208) | ($171) | ($118) | ($50) | ($48) |
| Gross profit | $85,912 | $88,756 | $86,705 | $84,810 | $83,214 | $77,935 | $70,443 | $74,502 | $64,815 | $59,674 | $56,388 | $51,960 | $47,863 | $44,987 | $42,641 | $39,246 | $29,400 | $21,376 | $20,784 | $19,720 | $15,956 | $13,562 | $12,185 | $11,307 | $5,090 | $4,254 | $3,721 | $2,806 | $2,273 | $1,993 | $1,586 | $1,659 | – | – | $625 | $469 | $413 | $354 | $278 | $191 | $81 | $70 |
| Operating expenses | ||||||||||||||||||||||||||||||||||||||||||
| Research and development | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | ($52,370) | ($51,875) | ($48,606) | ($47,161) | ($46,769) | ($43,314) | ($39,850) | ($40,424) | ($35,130) | ($31,968) | ($30,131) | ($27,282) | ($24,940) | ($23,553) | ($22,664) | ($20,889) | ($8,091) | ($7,662) | ($7,629) | ($6,940) | ($6,514) | ($5,490) | ($5,005) | ($4,915) | ($2,254) | ($1,553) | ($1,251) | ($926) | ($776) | ($700) | ($539) | ($640) | – | – | ($228) | ($160) | ($142) | ($130) | ($102) | ($79) | ($34) | ($32) |
| Total operating expenses | ($67,809) | ($68,084) | ($63,408) | ($61,496) | ($69,173) | ($57,118) | ($52,950) | ($53,377) | ($45,806) | ($41,656) | ($39,557) | ($35,962) | ($32,959) | ($31,424) | ($30,462) | ($28,525) | ($21,420) | ($14,162) | ($14,052) | ($14,142) | ($11,337) | ($10,041) | ($9,356) | ($9,353) | ($4,169) | ($5,001) | ($3,882) | ($2,142) | ($1,716) | ($1,527) | ($1,120) | ($1,329) | – | – | ($460) | ($324) | ($303) | ($264) | ($213) | ($145) | ($52) | ($48) |
| Total costs and expenses | ($104,902) | ($103,035) | ($100,434) | ($98,258) | ($107,386) | ($95,568) | ($86,071) | ($87,817) | ($75,498) | ($67,011) | ($63,905) | ($58,512) | ($53,871) | ($51,094) | ($50,391) | ($45,121) | ($29,957) | ($28,542) | ($27,691) | ($25,482) | ($20,347) | ($17,554) | ($16,392) | ($16,394) | ($7,181) | ($10,421) | ($8,380) | ($5,865) | ($4,862) | ($4,001) | ($3,146) | ($3,033) | – | – | ($735) | ($576) | ($547) | ($472) | ($384) | ($263) | ($102) | ($96) |
| Operating income | $18,103 | $20,672 | $23,297 | $23,314 | $14,041 | $20,817 | $17,493 | $21,125 | $19,009 | $18,018 | $16,831 | $15,998 | $14,904 | $13,563 | $12,179 | $10,721 | $7,980 | $7,214 | $6,732 | $5,578 | $4,619 | $3,521 | $2,829 | $1,954 | $921 | ($747) | ($161) | $664 | $557 | $467 | $466 | $330 | $1,375 | $1,375 | $165 | $145 | $110 | $90 | $65 | $46 | $29 | $22 |
| Earnings | ||||||||||||||||||||||||||||||||||||||||||
| EBITDA | $33,542 | $36,882 | $38,099 | $37,650 | $27,862 | $34,621 | $30,593 | $34,078 | $30,026 | $28,148 | $26,257 | $24,678 | $22,923 | $21,434 | $19,977 | $18,357 | $13,519 | $12,697 | $13,132 | $10,685 | $9,581 | $8,325 | $7,452 | $6,392 | $2,836 | $2,701 | $2,470 | $1,880 | $1,497 | $1,293 | $1,047 | $1,019 | $1,712 | $1,717 | $397 | $309 | $271 | $224 | $177 | – | – | – |
| Interest income | – | – | – | – | – | – | $1,160 | $438 | ($225) | $136 | $123 | $115 | $116 | $111 | $119 | $110 | $94 | $102 | $149 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Interest expense | ($4,234) | ($4,409) | ($4,134) | ($4,087) | ($3,896) | ($4,281) | ($4,588) | ($4,567) | ($3,542) | ($3,086) | ($2,942) | ($2,702) | ($2,617) | ($2,574) | ($2,521) | ($2,505) | ($2,156) | ($2,348) | ($2,439) | ($2,289) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Pre-tax income | $13,950 | $25,766 | $18,673 | $20,478 | $9,284 | $19,093 | $14,065 | $16,996 | $15,242 | $15,353 | $14,326 | $13,372 | $12,465 | $11,115 | $11,609 | $8,207 | $6,104 | $5,106 | $4,058 | $4,349 | $3,594 | $1,720 | $1,743 | ($137) | ($554) | $696 | $3,486 | $1,505 | $1,602 | ($112) | $103 | $4 | $1,375 | $1,375 | ($204) | ($143) | ($183) | ($147) | ($44) | $4 | $13 | $23 |
| Income tax expense | ($3,073) | ($6,106) | ($2,796) | ($5,371) | ($4,359) | ($5,259) | ($3,364) | ($3,673) | ($3,380) | $7,569 | ($5,298) | ($4,959) | ($3,873) | ($3,980) | ($3,744) | ($3,050) | ($2,436) | ($1,478) | ($1,533) | ($1,800) | ($1,347) | ($873) | ($801) | $16 | $128 | ($470) | ($1,441) | ($724) | ($594) | ($70) | ($109) | ($42) | – | – | ($14) | ($13) | $5 | ($2) | ($3) | ($13) | ($12) | ($9) |
| Net income | $11,316 | $19,998 | $16,192 | $15,388 | $5,370 | $14,159 | $10,534 | $13,057 | $11,731 | $22,735 | $8,678 | $8,163 | $8,380 | $6,816 | $6,203 | $4,160 | $3,635 | $3,638 | $2,547 | $2,587 | $2,533 | $928 | $970 | $3,240 | ($195) | $609 | $2,022 | $1,066 | $972 | ($239) | ($54) | ($44) | ($87) | ($87) | ($270) | ($156) | ($178) | ($149) | ($48) | ($9) | $1 | $15 |
| Per share | ||||||||||||||||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $3.16 | $5.39 | $4.14 | $3.71 | $1.21 | $3.04 | $2.28 | $2.83 | $2.53 | $4.75 | $1.78 | $1.62 | $1.60 | $1.28 | $1.14 | $0.75 | $0.645 | $0.63 | $0.43 | $0.415 | $0.40 | $0.0933 | $0.14 | $0.48 | ($0.0549) | $0.21 | $0.72 | $0.44 | $0.40 | ($0.12) | ($0.0362) | ($0.03) | ($0.0634) | ($0.0739) | ($0.22) | ($0.15) | ($0.17) | ($0.15) | ($0.08) | ($0.0167) | $0.0016 | $0.0367 |
| Basic EPS (GAAP) | $3.16 | $5.41 | $4.17 | $3.73 | $1.22 | $3.09 | $2.30 | $2.87 | $2.56 | $4.83 | $1.80 | $1.64 | $1.62 | $1.30 | $1.16 | $0.755 | $0.645 | $0.635 | $0.435 | $0.42 | $0.40 | $0.0933 | $0.11 | $0.36 | ($0.0549) | $0.21 | $0.74 | $0.46 | $0.43 | ($0.12) | ($0.0362) | ($0.03) | ($0.0634) | ($0.0739) | ($0.22) | ($0.15) | ($0.17) | ($0.15) | ($0.08) | ($0.0167) | $0.0016 | $0.0367 |
| Basic shares outstanding | 3,590 | 3,699 | 3,885 | 4,122 | 4,406 | 4,584 | 4,574 | 4,548 | 4,584 | 4,708 | 4,819 | 4,972 | 5,166 | 5,250 | 5,356 | 5,492 | 5,616 | 5,750 | 5,878 | 6,196 | 6,320 | 9,885 | 9,079 | 9,079 | 4,993 | 4,272 | 2,725 | 2,251 | 2,209 | 2,000 | 1,477 | 1,463 | 1,373 | 1,177 | 1,209 | 1,060 | 1,067 | 1,002 | 595 | 564 | 617 | 398 |
| Margins | ||||||||||||||||||||||||||||||||||||||||||
| Gross margin | 69.8% | 71.7% | 70.1% | 69.8% | 68.5% | 67.0% | 68.0% | 68.4% | 68.6% | 70.2% | 69.8% | 69.7% | 69.6% | 69.6% | 68.1% | 70.3% | 77.5% | 59.8% | 60.4% | 63.5% | 63.9% | 64.4% | 63.4% | 61.6% | 62.8% | 44.0% | 45.3% | 43.0% | 41.9% | 44.6% | 43.9% | 49.3% | – | – | 69.4% | 65.0% | 62.9% | 63.0% | 61.9% | 61.8% | 61.7% | 59.3% |
| Operating margin | 14.7% | 16.7% | 18.8% | 19.2% | 11.6% | 17.9% | 16.9% | 19.4% | 20.1% | 21.2% | 20.8% | 21.5% | 21.7% | 21.0% | 19.5% | 19.2% | 21.0% | 20.2% | 19.6% | 18.0% | 18.5% | 16.7% | 14.7% | 10.6% | 11.4% | (7.7%) | (2.0%) | 10.2% | 10.3% | 10.4% | 12.9% | 9.8% | 100.0% | 100.0% | 18.3% | 20.1% | 16.7% | 16.0% | 14.5% | 14.9% | 22.0% | 18.6% |
| Net margin | 9.2% | 16.2% | 13.1% | 12.7% | 4.4% | 12.2% | 10.2% | 12.0% | 12.4% | 26.7% | 10.7% | 11.0% | 12.2% | 10.5% | 9.9% | 7.4% | 9.6% | 10.2% | 7.4% | 8.3% | 10.1% | 4.4% | 5.0% | 17.7% | (2.4%) | 6.3% | 24.6% | 16.3% | 17.9% | (5.3%) | (1.5%) | (1.3%) | (6.3%) | (6.3%) | (30.0%) | (21.6%) | (27.2%) | (26.5%) | (10.6%) | (3.0%) | 0.8% | 12.4% |