<SEC-DOCUMENT>0001171843-25-001061.txt : 20250225
<SEC-HEADER>0001171843-25-001061.hdr.sgml : 20250225
<ACCEPTANCE-DATETIME>20250225161025
ACCESSION NUMBER:		0001171843-25-001061
CONFORMED SUBMISSION TYPE:	8-K
PUBLIC DOCUMENT COUNT:		15
CONFORMED PERIOD OF REPORT:	20250225
ITEM INFORMATION:		Results of Operations and Financial Condition
ITEM INFORMATION:		Financial Statements and Exhibits
FILED AS OF DATE:		20250225
DATE AS OF CHANGE:		20250225

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			UFP TECHNOLOGIES INC
		CENTRAL INDEX KEY:			0000914156
		STANDARD INDUSTRIAL CLASSIFICATION:	SURGICAL & MEDICAL INSTRUMENTS & APPARATUS [3841]
		ORGANIZATION NAME:           	08 Industrial Applications and Services
		IRS NUMBER:				042314970
		STATE OF INCORPORATION:			DE
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		8-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-12648
		FILM NUMBER:		25663161

	BUSINESS ADDRESS:	
		STREET 1:		100 HALE STREET
		CITY:			NEWBURYPORT
		STATE:			MA
		ZIP:			01950
		BUSINESS PHONE:		978-352-2200

	MAIL ADDRESS:	
		STREET 1:		100 HALE STREET
		CITY:			NEWBURYPORT
		STATE:			MA
		ZIP:			01950
</SEC-HEADER>
<DOCUMENT>
<TYPE>8-K
<SEQUENCE>1
<FILENAME>f8k_022525.htm
<DESCRIPTION>FORM 8-K
<TEXT>
<XBRL>
<?xml version='1.0' encoding='ASCII'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2015-02-26" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:dei="http://xbrl.sec.gov/dei/2023" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:us-gaap="http://fasb.org/us-gaap/2023" xmlns:us-roles="http://fasb.org/us-roles/2021-01-31" xmlns:country="http://xbrl.sec.gov/country/2023" xmlns:srt="http://fasb.org/srt/2023"><head><title>Form 8-K</title></head><body style="font-size: 10pt"><div style="display: none;"><ix:header><ix:hidden><ix:nonNumeric name="dei:EntityCentralIndexKey" contextRef="Form8K" id="ixv-142">0000914156</ix:nonNumeric> <ix:nonNumeric format="ixt:booleanfalse" name="dei:AmendmentFlag" contextRef="Form8K" id="ixv-143">False</ix:nonNumeric></ix:hidden><ix:references> <link:schemaRef xlink:href="gnw-20190101.xsd" xlink:type="simple"/> </ix:references> <ix:resources> <xbrli:context id="Form8K"> <xbrli:entity> <xbrli:identifier scheme="http://www.sec.gov/CIK">0000914156</xbrli:identifier> </xbrli:entity> <xbrli:period> <xbrli:startDate>2025-02-25</xbrli:startDate> <xbrli:endDate>2025-02-25</xbrli:endDate> </xbrli:period> </xbrli:context> <xbrli:unit id="USD"> <xbrli:measure>iso4217:USD</xbrli:measure> </xbrli:unit> <xbrli:unit id="Shares"> <xbrli:measure>xbrli:shares</xbrli:measure> </xbrli:unit> <xbrli:unit id="USDPShares"> <xbrli:divide> <xbrli:unitNumerator> <xbrli:measure>iso4217:USD</xbrli:measure> </xbrli:unitNumerator> <xbrli:unitDenominator> <xbrli:measure>xbrli:shares</xbrli:measure> </xbrli:unitDenominator> </xbrli:divide> </xbrli:unit> </ix:resources></ix:header></div><div style="margin-top: 3pt; margin-bottom: 12pt;"><div style="font-size: 1pt; border-top: Black 2pt solid; border-bottom: Black 1pt solid; width: 100%;">&#160;</div></div><p style="font-size: 14pt; font-weight: bold; text-align: center; margin-top: 6pt; margin-bottom: 0pt;">UNITED STATES</p><p style="font-size: 14pt; font-weight: bold; text-align: center; margin-top: 0pt; margin-bottom: 0pt;">SECURITIES AND EXCHANGE COMMISSION</p><p style="font-size: 14pt; font-weight: bold; text-align: center; margin-top: 0pt; margin-bottom: 6pt;">Washington, D.C. 20549</p><p style="text-align: center;">_________________</p><p style="font-size: 14pt; font-weight: bold; text-align: center; margin-top: 6pt; margin-bottom: 6pt;">FORM <ix:nonNumeric name="dei:DocumentType" contextRef="Form8K" id="ixv-163">8-K</ix:nonNumeric></p><p style="text-align: center;">_________________</p><p style="font-size: 12pt; font-weight: bold; text-align: center; margin-top: 6pt; margin-bottom: 6pt;">CURRENT REPORT</p><p style="font-size: 12pt; font-weight: bold; text-align: center; margin-top: 6pt; margin-bottom: 6pt;">Pursuant to Section 13 or 15(d)<br/>of the Securities Exchange Act of 1934</p><p style="font-size: 10pt; font-weight: bold; text-align: center; margin-top: 6pt; margin-bottom: 6pt;">Date of Report (Date of earliest event reported):&#160; <ix:nonNumeric format="ixt:datemonthdayyearen" name="dei:DocumentPeriodEndDate" contextRef="Form8K" id="ixv-164">February 25, 2025</ix:nonNumeric></p><p style="text-align: center;">_______________________________</p><p style="font-size: 12pt; text-align: center; margin-top: 6pt; margin-bottom: 0; font-weight: bold; text-transform: uppercase;"><ix:nonNumeric name="dei:EntityRegistrantName" contextRef="Form8K" id="ixv-165">UFP Technologies, Inc.</ix:nonNumeric></p><p style="font-size: 10pt; text-align: center; margin-top: 0; margin-bottom: 6pt;">(Exact name of registrant as specified in its charter)</p><p style="text-align: center;">_______________________________</p><table style="width: 100%; margin-right: auto; margin-left: auto;" border="0" cellspacing="0" cellpadding="0"><tr style="vertical-align: top;"><td style="width: 33%; font-size: 10pt; font-weight: bold; text-align: center;"><ix:nonNumeric format="ixt-sec:stateprovnameen" name="dei:EntityIncorporationStateCountryCode" contextRef="Form8K" id="ixv-166">Delaware</ix:nonNumeric></td><td style="width: 34%; font-size: 10pt; text-align: center; font-weight: bold;"><ix:nonNumeric name="dei:EntityFileNumber" contextRef="Form8K" id="ixv-167">001-12648</ix:nonNumeric></td><td style="width: 33%; font-size: 10pt; font-weight: bold; text-align: center;"><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="Form8K" id="ixv-168">04-2314970</ix:nonNumeric></td></tr><tr style="vertical-align: top;"><td style="font-size: 10pt; text-align: center;">(State or Other Jurisdiction of Incorporation)</td><td style="font-size: 10pt; text-align: center;">(Commission File Number)</td><td style="font-size: 10pt; text-align: center;">(I.R.S. Employer Identification No.)</td></tr></table><!-- Postal Address Country=UNITED STATES  --><p style="font-size: 10pt; text-align: center; margin-top: 12pt; margin-bottom: 0pt; font-weight: bold;"><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="Form8K" id="ixv-169">100 Hale Street</ix:nonNumeric></p><p style="font-size: 10pt; text-align: center; margin-top: 0pt; margin-bottom: 0pt; font-weight: bold;"><ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="Form8K" id="ixv-170">Newburyport</ix:nonNumeric>, <ix:nonNumeric format="ixt-sec:stateprovnameen" name="dei:EntityAddressStateOrProvince" contextRef="Form8K" id="ixv-171">Massachusetts</ix:nonNumeric> - USA <ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="Form8K" id="ixv-172">01950-3504</ix:nonNumeric></p><p style="font-size: 10pt; text-align: center; margin-top: 0pt; margin-bottom: 6pt;">(Address of Principal Executive Offices) (Zip Code)</p><!-- Phone Number --><p style="font-size: 10pt; font-weight: bold; text-align: center; margin-top: 0pt; margin-bottom: 0pt;">(<ix:nonNumeric name="dei:CityAreaCode" contextRef="Form8K" id="ixv-173">978</ix:nonNumeric>) <ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="Form8K" id="ixv-174">352-2200</ix:nonNumeric></p><p style="font-size: 10pt; text-align: center; margin-top: 0pt; margin-bottom: 6pt;">(Registrant's telephone number, including area code)</p><!-- Former Name --><p style="font-size: 10pt; font-weight: bold; text-align: center; margin-top: 0pt; margin-bottom: 0pt;">N/A</p><p style="font-size: 10pt; text-align: center; margin-top: 0pt; margin-bottom: 0pt;">(Former name or former address, if changed since last report)</p><p style="text-align: center;">_______________________________</p><!-- Checkboxes --><p style="font-size: 10pt; text-align: left; text-indent: 0; margin-top: 6pt; margin-bottom: 6pt;">Check the appropriate box below if the Form 8-K filing is intended to simultaneously satisfy the filing obligation of the registrant under any of the following provisions:</p><table style="width: 100%; margin-top: 6pt; margin-bottom: 6pt; font-size: 10pt;" cellspacing="0" cellpadding="0"><tr style="vertical-align: top;"><td style="width: 3%; text-align: center; vertical-align: middle;"><ix:nonNumeric format="ixt-sec:boolballotbox" name="dei:WrittenCommunications" contextRef="Form8K" id="ixv-175">&#9744;</ix:nonNumeric></td><td style="width: 97%; text-align: left;">Written communications pursuant to Rule 425 under the Securities Act (17 CFR 230.425)</td></tr><tr style="vertical-align: top;"><td style="width: 3%; text-align: center; vertical-align: middle;"><ix:nonNumeric format="ixt-sec:boolballotbox" name="dei:SolicitingMaterial" contextRef="Form8K" id="ixv-176">&#9744;</ix:nonNumeric></td><td style="width: 97%; text-align: left;">Soliciting material pursuant to Rule 14a-12 under the Exchange Act (17 CFR 240.14a-12)</td></tr><tr style="vertical-align: top;"><td style="width: 3%; text-align: center; vertical-align: middle;"><ix:nonNumeric format="ixt-sec:boolballotbox" name="dei:PreCommencementTenderOffer" contextRef="Form8K" id="ixv-177">&#9744;</ix:nonNumeric></td><td style="width: 97%; text-align: left;">Pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act (17 CFR 240.14d-2(b))</td></tr><tr style="vertical-align: top;"><td style="width: 3%; text-align: center; vertical-align: middle;"><ix:nonNumeric format="ixt-sec:boolballotbox" name="dei:PreCommencementIssuerTenderOffer" contextRef="Form8K" id="ixv-178">&#9744;</ix:nonNumeric></td><td style="width: 97%; text-align: left;">Pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act (17 CFR 240.13e-4(c))</td></tr></table><!-- Securities Table --><p style="font-size: 10pt; text-align: left; text-indent: 0; margin-top: 6pt; margin-bottom: 6pt;">Securities registered pursuant to Section 12(b) of the Act:</p><div><table border="0" cellspacing="0" cellpadding="0" style="width: 100%"><tr style="vertical-align: top"><td style="font-size: 10pt; text-align: center; margin-top: 6pt; margin-bottom: 6pt; width: 39%; border-bottom: Black 1pt solid">Title of each class</td><td style="font-size: 10pt; text-align: center; margin-top: 6pt; margin-bottom: 6pt; width: 23%; border-bottom: Black 1pt solid">Trading Symbol(s)</td><td style="font-size: 10pt; text-align: center; margin-top: 6pt; margin-bottom: 6pt; width: 38%; border-bottom: Black 1pt solid">Name of each exchange on which registered</td></tr><tr style="vertical-align: top"><td style="font-size: 10pt; text-align: center"><span><ix:nonNumeric contextRef="Form8K" name="dei:Security12bTitle" id="ixv-179">Common Stock</ix:nonNumeric></span></td><td style="font-size: 10pt; text-align: center"><span><ix:nonNumeric contextRef="Form8K" name="dei:TradingSymbol" id="ixv-180">UFPT</ix:nonNumeric></span></td><td style="font-size: 10pt; text-align: center"><span>The <ix:nonNumeric contextRef="Form8K" format="ixt-sec:exchnameen" name="dei:SecurityExchangeName" id="ixv-181">NASDAQ</ix:nonNumeric> Stock Market L.L.C.</span></td></tr></table></div><!-- Emerging Growth Company --><p style="font-size: 10pt; text-align: left; text-indent: 0; margin-top: 6pt; margin-bottom: 6pt;">Indicate by check mark whether the registrant is an emerging growth company as defined in Rule 405 of the Securities Act of 1933 (&#167;230.405 of this chapter) or Rule 12b-2 of the Securities Exchange Act of 1934 (&#167;240.12b-2 of this chapter).</p><p style="font-size: 10pt; text-align: left; text-indent: 0; margin-top: 6pt; margin-bottom: 6pt;">Emerging growth company <ix:nonNumeric format="ixt-sec:boolballotbox" name="dei:EntityEmergingGrowthCompany" contextRef="Form8K" id="ixv-182">&#9744;</ix:nonNumeric></p><p style="font-size: 10pt; text-align: left; text-indent: 0; margin-top: 6pt; margin-bottom: 6pt;">If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act. &#9744;</p><div style="margin-top: 0pt; margin-bottom: 0pt; border-bottom: Black 4pt solid;">&#160;</div><div style="page-break-before: always; margin-top: 0pt; margin-bottom: 0pt;">&#160;</div><!-- 8-K Items --><div><div><div style="font-size: 10pt;"><strong>Item 2.02. Results of Operations and Financial Condition.</strong></div><div style="font-size: 10pt;"><p>On February 25, 2025, &#160;UFP Technologies, Inc. issued a press release announcing its fourth quarter and year-end financial results for the year ended December 31, 2024. A copy of the press release is furnished herewith as Exhibit 99.1.</p><p><strong>Limitation on Incorporation by Reference.</strong> The information furnished in this Item 2.02, including the press release attached hereto as Exhibit 99.1, shall not be deemed &#8220;filed&#8221; for purposes of Section 18 of the Securities ExchangeAct of 1934, as amended (the &#8220;ExchangeAct&#8221;), or otherwise subject to the liabilities of that section, nor shall such information be deemed incorporated by reference in any filing under the SecuritiesAct of 1933, as amended, or the Exchange Act, except as shall be expressly set forth by specific reference in such a filing.</p><p><strong>Cautionary Note Regarding Forward-Looking Statements.</strong> Except for historical information contained in the press release attached as an exhibit hereto, the press release contains forward-looking statements that involve certain risks and uncertainties that could cause actual results to differ materially from those expressed or implied by these statements. Please refer to the cautionary note in the press release regarding these forward-looking statements.</p></div></div><div><div style="font-size: 10pt;"><strong>Item 9.01. Financial Statements and Exhibits.</strong></div><div style="font-size: 10pt;"><p>(d) Exhibits</p><table style="font-size: 10pt;" border="0" cellspacing="0" cellpadding="0"><tr><td style="font-size: 10pt; font-weight: bold; text-decoration: underline;" valign="bottom">Exhibit Number</td><td style="font-size: 10pt; width: 20px;">&#160;</td><td style="font-size: 10pt; font-weight: bold; text-decoration: underline;" valign="bottom">Description</td></tr><tr><td style="font-size: 10pt;">&#160;</td><td style="font-size: 10pt; width: 20px;">&#160; &#160;&#160;</td><td style="font-size: 10pt;">&#160;</td></tr><tr><td style="font-size: 10pt;"><a href="exh_991.htm">99.1</a></td><td style="font-size: 10pt; width: 20px;">&#160;</td><td style="font-size: 10pt;"><a href="exh_991.htm">Press Release dated February 25, 2025</a></td></tr><tr><td style="font-size: 10pt;">104</td><td style="font-size: 10pt; width: 20px;">&#160;</td><td style="font-size: 10pt;">Cover Page Interactive Data File (embedded within the Inline XBRL document)</td></tr></table></div></div></div><div style="margin-top: 0pt; margin-bottom: 0pt; border-bottom: Black 4pt solid;">&#160;</div><div style="page-break-before: always; margin-top: 0pt; margin-bottom: 0pt;">&#160;</div><!-- Signatures --><p style="font-size: 10pt; text-align: center; font-weight: bold;">SIGNATURE</p><p style="font-size: 10pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned hereunto duly authorized.</p><table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"><tr style="vertical-align: top;"><td>&#160;</td><td style="font-size: 10pt; font-weight: bold;" colspan="2">UFP Technologies, Inc.</td></tr><tr style="vertical-align: top;"><td style="width: 49%;">&#160;</td><td style="width: 2%;">&#160;</td><td style="width: 49%;">&#160;</td></tr><tr style="vertical-align: top;"><td>&#160;</td><td>&#160;</td><td style="font-size: 10pt;"/></tr><tr style="vertical-align: top;"><td style="font-size: 10pt;">Date: February 25, 2025</td><td style="font-size: 10pt;">By:&#160;</td><td style="text-decoration: underline; font-size: 10pt;">/s/ Ronald J. Lataille&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</td></tr><tr style="vertical-align: top;"><td>&#160;</td><td>&#160;</td><td style="font-size: 10pt;">Ronald J. Lataille</td></tr><tr style="vertical-align: top;"><td>&#160;</td><td>&#160;</td><td style="font-size: 10pt;">Chief Financial Officer and Senior Vice President </td></tr><tr style="vertical-align: top;"><td>&#160;</td><td>&#160;</td><td style="font-size: 10pt;"/></tr></table><!-- Exhibit Index --><div></div><!-- 978-352-2200 Form 8-KFebruary 25, 2025 --><p>&#160;</p></body></html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-99.1
<SEQUENCE>2
<FILENAME>exh_991.htm
<DESCRIPTION>PRESS RELEASE
<TEXT>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en-US"><head><title>EdgarFiling</title><meta content="text/html; charset=windows-1252" ><meta name="GENERATOR" content="MSHTML 8.00.7601.18094" ></head><body bgcolor="#ffffff"><p style="text-align: right; text-transform: capitalize;"><strong>EXHIBIT 99.1</strong></p><p style="text-align: center;"><font style="font-size: 14pt;"><strong>UFP Technologies Announces Record 2024 Results</strong></font></p><p style="text-align: center;"><strong></strong></p><p>
 <p align="justify">NEWBURYPORT, Mass., Feb.  25, 2025  (GLOBE NEWSWIRE) -- UFP Technologies, Inc. (Nasdaq: UFPT), a designer and custom manufacturer of engineered solutions primarily for the medical market, today reported 2024 net income of $59.0 million, 31.3% higher than net income of $44.9&#160;million for 2023. Adjusted net income grew 32.5% to $67.6 million. Net sales for 2024 were $504.4 million, 26.1% higher than 2023 sales of $400.1 million. GAAP and adjusted earnings per diluted common share outstanding (EPS) were $7.58 and $8.68 respectively.</p>  <p align="justify">For its fourth quarter ended December 31, 2024, the Company reported net income of $16.4 million, 41.1% higher than net income of $11.6&#160;million in the same period of 2023. Adjusted net income for the fourth quarter of 2024 grew 51.6% to $19.2 million. Sales for the fourth quarter of 2024 were $144.1 million, 41.9% higher than 2023 fourth-quarter sales of $101.5 million. GAAP and adjusted EPS were $2.10 and $2.46 respectively. Throughout this news release, reference is made to Non-GAAP measures including adjusted gross margins, adjusted operating income, adjusted SG&amp;A, adjusted net Income and EPS, and EBITDA and adjusted EBITDA. Please see &#8220;Non-GAAP Financial Information&#8221; at the end of this news release.</p>  <p align="justify">&#8220;I am very pleased with our fourth quarter and full-year 2024 results,&#8221; said R. Jeffrey Bailly, Chairman &amp; CEO. &#8220;Sales for the quarter and the year grew 42% and 26%, respectively. Organic growth for the quarter and year was 6.7% and 8.5%, respectively. Adjusted earnings per diluted share outstanding for the quarter and year grew 50% and 31% respectively to $2.46 and $8.68.&#8221;</p>  <p align="justify"><em>&#8220;</em>I am also very pleased with the performance of our newly acquired companies&#8212;AJR Enterprises, Welch Fluorocarbon, Marble Medical, and AQF Medical. As a group, they are performing ahead of expectations with particularly strong growth in the safe patient handling space,&#8221; said Bailly. &#8220;We are again expanding our operations in the Dominican Republic to accommodate new business wins, continued growth of our existing Robotic Surgery business, and planned business transfers. Our previous expansion in late 2023 and early 2024 allowed us to fulfill our customers&#8217; safety stock objectives and accommodate the increased share of business we were awarded. Increased forecasted demand at both of our Dominican Republic locations requires additional plant and equipment investments which are now underway.&#8221;</p>  <p align="justify">&#8220;Looking ahead we remain excited about our future,&#8221; said Bailly. &#8220;We have added new talent in business development, quality assurance, general management, and back-office resources to maximize our effectiveness and position us for future growth. We have two major programs launching in the second half of 2025 and a robust growing pipeline of new business opportunities. In addition, we are continuing our efforts on the acquisition front, targeting companies that strengthen our platform and increase our value to customers. We anticipate that our strong cash flow will help us quickly reduce our debt and position us to finance new deals.&#8221;</p>  <p align="justify"><u>Financial Highlights:</u></p>  <ul type="disc"><li style="margin-top:4pt; text-align:justify;">Sales for the fourth quarter increased 41.9% to $144.1 million, from $101.5 million in the same period of 2023. Sales for the full year of 2024 increased 26.1% to $504.4 million from $400.1 million in the same period of 2023.</li><li style="margin-top:4pt; text-align:justify;">Fourth quarter MedTech sales increased 48.6% to $132.7 million. Sales to all other markets decreased 7.0% to $11.4 million. Full-year MedTech sales increased 30.2% to $450.8 million while sales to all other markets were consistent at $53.7 million.</li><li style="margin-top:4pt; text-align:justify;">Gross profit as a percentage of sales (&#8220;gross margin&#8221;) increased to 29.2% for the fourth quarter, from 25.7% in the same quarter of 2023. Gross margin for the full year of 2024 increased to 29.1%, from 28.1% in the same period of 2023. When adding back purchase accounting expenses of $1.1 million, adjusted gross margin increased to 29.3% for the full year of 2024.</li><li style="margin-top:4pt; text-align:justify;">Selling, general and administrative expenses (&#8220;SG&amp;A&#8221;) for the fourth quarter increased 41.9% to $18.6 million compared to $13.1 million in the same quarter of 2023. Full-year 2024 SG&amp;A increased 22.3% to $62.2 million, from $50.9 million in the same period of 2023. As a percentage of sales, SG&amp;A decreased to 12.3% in 2024 from 12.7% in 2023. Adjusted SG&amp;A as a percentage of sales decreased to 11.2% from 11.8%, and to 11.0% from 11.6% for the fourth quarter and full year of 2024, respectively.</li><li style="margin-top:4pt; text-align:justify;">For the fourth quarter, adjusted operating income increased 84.0% to $26.0 million, from $14.1 million in the same quarter of 2023. Full-year 2024 adjusted operating income increased 40.4% to $92.3 million, from $65.7 million in the same period of 2023.</li><li style="margin-top:4pt; text-align:justify;">Adjusted net income in the fourth quarter increased 51.6% to $19.2 million, from $12.6 million in the same period of&#160;2023. Full-year 2024 adjusted net income increased 32.5% to $67.6 million, from $51.0 million in the same period of 2023.&#160;&#160;</li><li style="margin-top:4pt; text-align:justify;">Adjusted EBITDA for the fourth quarter of 2024 increased 77.9% to $30.4 million in the same period of 2023. Adjusted EBITDA for the year ended December 31, 2024, increased 39.1% to $107.3 million from $77.2 million in 2023. <br ><br ></li></ul>  <p align="justify"><strong>About UFP Technologies, Inc. </strong></p>  <p>UFP Technologies is an innovative designer and custom manufacturer of comprehensive solutions for medical devices, sterile packaging, and other highly engineered custom products. UFP is an important link in the medical device supply chain and a valued outsource partner to many of the top medical device manufacturers in the world. The Company&#8217;s single-use and single-patient devices and components are used in a wide range of medical devices and packaging for minimally invasive surgery, infection prevention, wound care, wearables, orthopedic soft goods, and orthopedic implants.</p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td colspan="16" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Consolidated Condensed Statements of Income </strong><br >(in thousands, except per share data<em>)</em><br >(unaudited)</td></tr><tr><td colspan="16" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Twelve Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31</strong></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31</strong></td></tr><tr><td style="max-width:45%; width:45%; min-width:45%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Net sales</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">144,070</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">101,498</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">504,421</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">400,072</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Cost of sales</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">102,014</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">75,369</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">357,728</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">287,847</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Gross profit</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">42,056</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">26,129</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">146,693</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">112,225</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Selling, general and administrative expenses</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">18,618</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">13,118</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">62,218</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">50,889</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Acquisition costs</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">844</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,520</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Change in fair value of contingent consideration</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">952</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">3,527</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Loss on disposal of fixed assets</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">99</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">37</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">106</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">145</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Operating income</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">22,257</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">12,736</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">80,897</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">57,664</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Interest expense, net</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">3,377</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">755</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">8,061</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">3,645</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Other (income) expense</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(219</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">89</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(189</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">117</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Income before income tax expense</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">19,099</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11,892</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">73,025</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">53,902</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Income tax expense</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,724</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">285</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">14,044</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">8,978</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Net income</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">16,375</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11,607</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">58,981</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">44,924</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Net income per share outstanding</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2.13</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1.52</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7.69</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">5.89</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Net income per diluted share outstanding</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2.10</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1.51</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7.58</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">5.83</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Weighted average shares outstanding</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,675</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,639</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,668</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,624</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Weighted average diluted shares outstanding</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,794</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,712</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,785</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,701</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr></table> <p align="left"><br ></p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td colspan="8" style="text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td colspan="8" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Consolidated Condensed Balance Sheets</strong><br >(in thousands)<br >(unaudited)</td></tr><tr><td colspan="8" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td></tr><tr><td style="max-width:65%; width:65%; min-width:65%;;text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:15%; width:15%; min-width:15%;;border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:15%; width:15%; min-width:15%;;border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Assets:</td><td colspan="3" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Cash and cash equivalents</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">13,450</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">5,263</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Receivables, net</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">84,677</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">64,449</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Inventories</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">87,536</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">70,191</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Other current assets</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">9,282</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">4,730</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Net property, plant, and equipment</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">70,564</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">62,137</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Goodwill</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">189,657</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">113,263</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Intangible assets, net</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">144,252</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">64,116</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Other assets</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">29,577</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">19,987</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total assets</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">628,995</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">404,136</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Liabilities and equity:</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Accounts payable</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">24,269</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">22,286</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Current portion of long-term debt</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">12,500</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">4,000</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Other current liabilities</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">39,526</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">31,923</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Long-term debt, less current portion</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">176,875</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">28,000</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Other liabilities</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">33,065</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">31,836</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total liabilities</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">286,235</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">118,045</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total equity</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">342,760</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">286,091</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total liabilities and stockholders' equity</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">628,995</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">404,136</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td></tr></table> <p><strong><br >Forward-Looking Statements</strong></p>  <p align="justify">Certain statements in this press release may be considered &#8220;forward-looking statements&#8221; within the meaning of Section 27A of the Securities Act of 1933 and Section 21E of the Securities Exchange Act of 1934. Forward-looking statements generally relate to future events or the Company&#8217;s future financial or operating performance and may be identified by words such as &#8220;may,&#8221; &#8220;should,&#8221; &#8220;expect,&#8221; &#8220;intend,&#8221; &#8220;will,&#8221; &#8220;estimate,&#8221; &#8220;anticipate,&#8221; &#8220;believe,&#8221; &#8220;predict,&#8221; or similar words. Such statements include, but are not limited to, statements about the Company&#8217;s future financial or operating performance; the continuing operation of the Company&#8217;s locations, the maintenance of its facilities and the sufficiency of the Company&#8217;s supply chain, inventory, liquidity and capital resources, including increased costs in connection with such efforts; statements about the Company&#8217;s acquisition strategies and opportunities and the Company&#8217;s growth potential and strategies for growth; statements about the integration and performance of recent acquisitions; statements about the Company&#8217;s ability to realize the benefits expected from our recently completed acquisitions, including any related synergies; statements about customer expectations regarding inventory levels; expectations regarding customer demand; and any indication that the Company may be able to sustain or increase its sales, earnings or earnings per share, its sales, earnings or earnings per share growth rates, or available capital for acquisitions. Such forward-looking statements are based upon assumptions made by the Company as of the date hereof and are subject to risks, uncertainties, and other factors that could cause actual results to differ materially from those expressed or implied by such forward-looking statements. Factors that may cause actual results to differ materially from current expectations include, but are not limited to: the Company's general ability to execute its business plans; industry conditions, including fluctuations in supply, demand, and prices for the Company's products and services; risks relating to customer concentration; risks relating to the Company&#8217;s ability to achieve anticipated benefits of recent acquisitions, risks relating to the imposition of tariffs by the United States and other countries, risks relating to our use and the use by our customers, suppliers, and vendors of AI, and other risks and uncertainties set forth in the sections entitled "Risk Factors" and "Cautionary Note Regarding Forward-Looking Statements" in the Company's filings with the Securities and Exchange Commission ("SEC"), which are available on the SEC's website at www.sec.gov. The Company expressly disclaims any obligation or undertaking to release publicly any updates or revisions to any such statement to reflect any change in the Company&#8217;s expectations or any change in events, conditions, or circumstances on which any such statement is based. Forward-looking statements are also subject to the risks and other issues described above under &#8220;Use of Non-GAAP Financial Information,&#8221; which could cause actual results to differ materially from current expectations included in the Company&#8217;s forward-looking statements included in this press release.</p>  <p><strong>Non-GAAP Financial Information</strong></p>  <p align="justify">This news release includes non-generally accepted accounting principles (&#8220;GAAP&#8221;) performance measures. Management considers Adjusted Operating Income, Adjusted Selling and General Administrative Expenses, Adjusted Net Income, Adjusted Net Income per diluted shares outstanding, EBITDA and Adjusted EBITDA, non-GAAP measures. The Company uses these non-GAAP financial measures to facilitate management's financial and operational decision-making, including evaluation of the Company&#8217;s historical operating results. The Company&#8217;s management believes these non-GAAP measures are useful in evaluating the Company&#8217;s operating performance and are similar measures reported by publicly listed U.S. competitors, and regularly used by securities analysts, institutional investors, and other interested parties in analyzing operating performance and prospects. These non-GAAP financial measures reflect an additional way of viewing aspects of the Company's operations that, when viewed with GAAP results and the reconciliations to corresponding GAAP financial measures, may provide a more complete understanding of factors and trends affecting the Company&#8217;s business. By providing these non-GAAP measures, the Company&#8217;s management intends to provide investors with a meaningful, consistent comparison of the Company&#8217;s performance for the periods presented. These non-GAAP financial measures should be considered supplemental to, and not a substitute for, financial information prepared in accordance with GAAP. The Company's definition of these non-GAAP measures may differ from similarly titled measures of performance used by other companies in other industries or within the same industry.</p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td class="hugin" colspan="16">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Table 1: Adjusted Operating Income Reconciliation</strong><br >(in thousands)</td></tr><tr><td colspan="16" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Twelve Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td></tr><tr><td style="max-width:45%; width:45%; min-width:45%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Operating income (GAAP)</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">22,257</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">12,736</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">80,897</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">57,664</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjustments:</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Purchase accounting expenses</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1,100</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Acquisition costs</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">844</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,520</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Change in fair value of contingent consideration</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">952</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">3,527</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Amortization of Intangible Assets</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,524</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1,098</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">6,727</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">4,403</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Loss on disposal of fixed assets</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">99</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">37</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">106</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">145</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjusted operating income (Non-GAAP)</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">25,962</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">14,109</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">92,302</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">65,739</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr></table> <p align="left"><br ></p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Table 2: Adjusted Selling General and Administrative Expenses (SG&amp;A)</strong><br >(in thousands)</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Twelve Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td></tr><tr><td style="max-width:45%; min-width:45%;;vertical-align: bottom ; ">&#160;</td><td colspan="3" style="max-width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;<strong>2024</strong></td><td style="max-width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="max-width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;<strong>2023</strong></td><td style="max-width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="max-width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;<strong>2024</strong></td><td style="max-width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="max-width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;<strong>2023</strong></td></tr><tr><td style="max-width:45%; width:45%; min-width:45%;;text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">SG&amp;A (GAAP)</td><td style="max-width:1%; width:1%; min-width:1%;;padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="max-width:10%; width:10%; min-width:10%;;padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">18,618</td><td style="max-width:2%; width:2%; min-width:2%;;padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="max-width:10%; width:10%; min-width:10%;;padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">13,118</td><td style="max-width:2%; width:2%; min-width:2%;;padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="max-width:10%; width:10%; min-width:10%;;padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">62,218</td><td style="max-width:2%; width:2%; min-width:2%;;padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="max-width:10%; width:10%; min-width:10%;;padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">50,889</td><td style="max-width:2%; width:2%; min-width:2%;;padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjustments:</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Amortization of Intangible Assets</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(2,524</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(1,098</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(6,727</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(4,403</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjusted SG&amp;A (Non-GAAP)</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">16,094</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">12,020</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">55,491</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">46,486</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjusted SG&amp;A as a % of sales</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11.2</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">%</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11.8</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">%</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11.0</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">%</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11.6</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">%</td></tr></table> <p align="left"><br ></p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td class="hugin" colspan="16">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Table 3: Adjusted Net Income and Diluted Common Share Outstanding Reconciliation</strong><br >(in thousands, except per share data)</td></tr><tr><td class="hugin" colspan="16">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Twelve Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31, </strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td></tr><tr><td style="max-width:45%; width:45%; min-width:45%;;vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Net income (GAAP)</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">16,375</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">11,607</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">58,981</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">44,924</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjustments (net of taxes):</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Purchase accounting expenses</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1,100</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Acquisition costs</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">844</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,520</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">-</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Change in fair value of contingent consideration</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">238</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">952</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">3,527</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Amortization of Intangible Assets</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2,524</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1,098</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">6,727</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">4,403</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Loss on disposal of fixed assets</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">99</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">37</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">106</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">145</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; vertical-align: bottom ; ">Taxes on adjustments</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(917</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(340</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(2,823</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">(1,999</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">)</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjusted net income (Non-GAAP)</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">19,163</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">12,640</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">67,563</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">51,000</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Adjusted Net Income per diluted share outstanding (Non-GAAP)</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">2.46</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">1.64</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">8.68</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">6.62</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">Weighted average diluted common shares outstanding</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,794</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,712</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,785</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: middle; vertical-align: bottom ; ">7,701</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr></table> <p align="left"><br ></p> <table style="width:100%; border-collapse:collapse !important;;border-collapse: collapse; "><tr><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; "><strong>Table 4: EBITDA and Adjusted EBITDA Reconciliation </strong><br >(in thousands)</td></tr><tr><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; ">&#160;</td></tr><tr><td class="hugin">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>Twelve Months Ended</strong></td></tr><tr><td class="hugin">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td><td style="text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>December 31,</strong></td></tr><tr><td class="hugin" style="max-width:45%; width:45%; min-width:45%;">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2024</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td><td style="max-width:11%; width:11%; min-width:11%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; "><strong>2023</strong></td><td style="max-width:1%; width:1%; min-width:1%;;border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: middle; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Net income (GAAP)</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">16,375</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">11,607</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">58,981</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">44,924</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Income tax expense</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">2,724</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">285</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">14,044</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">8,878</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Interest expense, net</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">3,377</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">755</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">8,061</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">3,645</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Depreciation</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">2,133</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">1,862</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">7,988</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">7,004</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Amortization of Intangible Assets</td><td style="padding-right: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">2,524</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">1,098</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">6,727</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">4,403</td><td style="padding-left: 0 ; border-bottom: solid black 1pt ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">EBITDA (Non-GAAP)</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">27,133</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">15,607</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">95,801</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">68,854</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Adjustments:</td><td colspan="3" style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">Purchase accounting expenses</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">1,100</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">Share based compensation</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">2,054</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">1,191</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">6,842</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">4,641</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">Acquisition costs</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">844</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">2,520</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">-</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">Change in fair value of contingent consideration</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">238</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">238</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">952</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">3,527</td><td style="padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="vertical-align: middle;   text-align: left;   padding-left: 15.0px; ">Loss on disposal of fixed assets</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">99</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">37</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">106</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">145</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td style="text-align: left ;  vertical-align: middle; ">Adjusted EBITDA (Non-GAAP)</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">30,368</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">17,073</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td class="hugin">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">107,321</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td><td style="text-align: right ;  vertical-align: middle; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: middle; ">$</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">77,167</td><td style="border-top: solid black 1pt ; border-bottom: double black 3pt ; padding-left: 0 ; text-align: right ;  vertical-align: middle; ">&#160;</td></tr><tr><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td></tr><tr><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td><td class="hugin">&#160;</td><td class="hugin" colspan="3">&#160;</td></tr><tr><td colspan="16" style="text-align: center ;  vertical-align: middle; vertical-align: top ; ">www.ufpt.com<br >Contact: Ron Lataille<br >978-234-0926, rlataille@ufpt.com</td></tr><tr><td class="hugin" colspan="16">&#160;</td></tr></table></p><p ></p></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>3
<FILENAME>gnw-20190101.xsd
<DESCRIPTION>XBRL SCHEMA FILE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:dei="http://xbrl.sec.gov/dei/2023" xmlns:us-gaap="http://fasb.org/us-gaap/2023" xmlns:srt="http://fasb.org/srt/2023" xmlns:srt-types="http://fasb.org/srt-types/2023" xmlns:gnw="http://globenewswire.com/20190101" elementFormDefault="qualified" targetNamespace="http://globenewswire.com/20190101">
    <annotation>
      <appinfo>
	<link:roleType roleURI="http://globenewswire.com/role/Cover" id="Cover">
	  <link:definition>00000001 - Document - Cover</link:definition>
	  <link:usedOn>link:presentationLink</link:usedOn>
	  <link:usedOn>link:calculationLink</link:usedOn>
	  <link:usedOn>link:definitionLink</link:usedOn>
	</link:roleType>
	<link:linkbaseRef xlink:type="simple" xlink:href="gnw-20190101_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:title="Presentation Links" />
	<link:linkbaseRef xlink:type="simple" xlink:href="gnw-20190101_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:title="Label Links" />
	<link:linkbaseRef xlink:type="simple" xlink:href="gnw-20190101_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:title="Definition Links" />
      </appinfo>
    </annotation>
    <import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd" />
    <import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd" />
    <import namespace="http://xbrl.sec.gov/dei/2023" schemaLocation="https://xbrl.sec.gov/dei/2023/dei-2023.xsd" />
    <import namespace="http://fasb.org/us-gaap/2023" schemaLocation="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd" />
    <import namespace="http://fasb.org/us-types/2023" schemaLocation="https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd" />
    <import namespace="http://www.xbrl.org/dtr/type/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd" />
    <import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd" />
    <import namespace="http://xbrl.sec.gov/country/2023" schemaLocation="https://xbrl.sec.gov/country/2023/country-2023.xsd" />
    <import namespace="http://fasb.org/srt/2023" schemaLocation="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd" />
    <import namespace="http://fasb.org/srt-types/2023" schemaLocation="https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd" />
</schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>4
<FILENAME>gnw-20190101_def.xml
<DESCRIPTION>XBRL DEFINITION FILE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<link:linkbase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
    <link:roleRef roleURI="http://globenewswire.com/role/Cover" xlink:href="gnw-20190101.xsd#Cover" xlink:type="simple" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension" arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain" arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member" arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all" arcroleURI="http://xbrl.org/int/dim/arcrole/all" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#notAll" arcroleURI="http://xbrl.org/int/dim/arcrole/notAll" />
    <link:arcroleRef xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default" arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" />
    <link:definitionLink xlink:type="extended" xlink:role="http://globenewswire.com/role/Cover" xlink:title="00000001 - Document - Cover">
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="loc_us-gaapStatementLineItems" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="loc_us-gaapStatementTable" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xbrldt:contextElement="segment" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_us-gaapStatementTable" xlink:type="arc" order="10" xbrldt:closed="true" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementClassOfStockAxis" xlink:label="loc_us-gaapStatementClassOfStockAxis" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaapStatementTable" xlink:to="loc_us-gaapStatementClassOfStockAxis" xlink:type="arc" order="1" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ClassOfStockDomain" xlink:label="loc_us-gaapClassOfStockDomain" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaapStatementClassOfStockAxis" xlink:to="loc_us-gaapClassOfStockDomain" xlink:type="arc" order="20" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ClassOfStockDomain" xlink:label="loc_us-gaapClassOfStockDomain_10" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xbrldt:contextElement="segment" xlink:from="loc_us-gaapStatementClassOfStockAxis" xlink:to="loc_us-gaapClassOfStockDomain_10" xlink:type="arc" order="30" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonClassAMember" xlink:label="loc_us-gaapCommonClassAMember_10" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapClassOfStockDomain" xlink:to="loc_us-gaapCommonClassAMember_10" xlink:type="arc" order="11" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredClassAMember" xlink:label="loc_us-gaapPreferredClassAMember_20" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapClassOfStockDomain" xlink:to="loc_us-gaapPreferredClassAMember_20" xlink:type="arc" order="21" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="loc_deiDocumentType_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentType_40" xlink:type="arc" order="0" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="loc_deiAmendmentFlag_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiAmendmentFlag_40" xlink:type="arc" order="1" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentDescription" xlink:label="loc_deiAmendmentDescription_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiAmendmentDescription_40" xlink:type="arc" order="2" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentRegistrationStatement" xlink:label="loc_deiDocumentRegistrationStatement_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentRegistrationStatement_40" xlink:type="arc" order="3" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="loc_deiDocumentAnnualReport_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentAnnualReport_40" xlink:type="arc" order="4" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentQuarterlyReport" xlink:label="loc_deiDocumentQuarterlyReport_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentQuarterlyReport_40" xlink:type="arc" order="5" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="loc_deiDocumentTransitionReport_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentTransitionReport_40" xlink:type="arc" order="6" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyReport" xlink:label="loc_deiDocumentShellCompanyReport_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentShellCompanyReport_40" xlink:type="arc" order="7" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyEventDate" xlink:label="loc_deiDocumentShellCompanyEventDate_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentShellCompanyEventDate_40" xlink:type="arc" order="8" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodStartDate" xlink:label="loc_deiDocumentPeriodStartDate_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentPeriodStartDate_40" xlink:type="arc" order="9" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="loc_deiDocumentPeriodEndDate_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentPeriodEndDate_40" xlink:type="arc" order="10" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="loc_deiCurrentFiscalYearEndDate_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiCurrentFiscalYearEndDate_40" xlink:type="arc" order="11" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="loc_deiEntityFileNumber_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityFileNumber_40" xlink:type="arc" order="12" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="loc_deiEntityRegistrantName_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityRegistrantName_40" xlink:type="arc" order="13" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="loc_deiEntityCentralIndexKey_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityCentralIndexKey_40" xlink:type="arc" order="14" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPrimarySicNumber" xlink:label="loc_deiEntityPrimarySicNumber_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityPrimarySicNumber_40" xlink:type="arc" order="15" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="loc_deiEntityTaxIdentificationNumber_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityTaxIdentificationNumber_40" xlink:type="arc" order="16" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="loc_deiEntityIncorporationStateCountryCode_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityIncorporationStateCountryCode_40" xlink:type="arc" order="17" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="loc_deiEntityAddressAddressLine1_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressAddressLine1_40" xlink:type="arc" order="18" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine2" xlink:label="loc_deiEntityAddressAddressLine2_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressAddressLine2_40" xlink:type="arc" order="19" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine3" xlink:label="loc_deiEntityAddressAddressLine3_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressAddressLine3_40" xlink:type="arc" order="20" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="loc_deiEntityAddressCityOrTown_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressCityOrTown_40" xlink:type="arc" order="21" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="loc_deiEntityAddressStateOrProvince_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressStateOrProvince_40" xlink:type="arc" order="22" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCountry" xlink:label="loc_deiEntityAddressCountry_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressCountry_40" xlink:type="arc" order="23" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="loc_deiEntityAddressPostalZipCode_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityAddressPostalZipCode_40" xlink:type="arc" order="24" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CountryRegion" xlink:label="loc_deiCountryRegion_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiCountryRegion_40" xlink:type="arc" order="25" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="loc_deiCityAreaCode_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiCityAreaCode_40" xlink:type="arc" order="26" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="loc_deiLocalPhoneNumber_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiLocalPhoneNumber_40" xlink:type="arc" order="27" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Extension" xlink:label="loc_deiExtension_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiExtension_40" xlink:type="arc" order="28" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_WrittenCommunications" xlink:label="loc_deiWrittenCommunications_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiWrittenCommunications_40" xlink:type="arc" order="29" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SolicitingMaterial" xlink:label="loc_deiSolicitingMaterial_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiSolicitingMaterial_40" xlink:type="arc" order="30" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementTenderOffer" xlink:label="loc_deiPreCommencementTenderOffer_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiPreCommencementTenderOffer_40" xlink:type="arc" order="31" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementIssuerTenderOffer" xlink:label="loc_deiPreCommencementIssuerTenderOffer_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiPreCommencementIssuerTenderOffer_40" xlink:type="arc" order="32" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="loc_deiSecurity12bTitle_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiSecurity12bTitle_40" xlink:type="arc" order="33" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_NoTradingSymbolFlag" xlink:label="loc_deiNoTradingSymbolFlag_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiNoTradingSymbolFlag_40" xlink:type="arc" order="34" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="loc_deiTradingSymbol_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiTradingSymbol_40" xlink:type="arc" order="35" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="loc_deiSecurityExchangeName_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiSecurityExchangeName_40" xlink:type="arc" order="36" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12gTitle" xlink:label="loc_deiSecurity12gTitle_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiSecurity12gTitle_40" xlink:type="arc" order="37" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityReportingObligation" xlink:label="loc_deiSecurityReportingObligation_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiSecurityReportingObligation_40" xlink:type="arc" order="38" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AnnualInformationForm" xlink:label="loc_deiAnnualInformationForm_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiAnnualInformationForm_40" xlink:type="arc" order="39" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditedAnnualFinancialStatements" xlink:label="loc_deiAuditedAnnualFinancialStatements_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiAuditedAnnualFinancialStatements_40" xlink:type="arc" order="40" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="loc_deiEntityWellKnownSeasonedIssuer_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityWellKnownSeasonedIssuer_40" xlink:type="arc" order="41" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="loc_deiEntityVoluntaryFilers_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityVoluntaryFilers_40" xlink:type="arc" order="42" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="loc_deiEntityCurrentReportingStatus_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityCurrentReportingStatus_40" xlink:type="arc" order="43" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="loc_deiEntityInteractiveDataCurrent_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityInteractiveDataCurrent_40" xlink:type="arc" order="44" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="loc_deiEntityFilerCategory_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityFilerCategory_40" xlink:type="arc" order="45" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="loc_deiEntitySmallBusiness_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntitySmallBusiness_40" xlink:type="arc" order="46" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="loc_deiEntityEmergingGrowthCompany_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityEmergingGrowthCompany_40" xlink:type="arc" order="47" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityExTransitionPeriod" xlink:label="loc_deiEntityExTransitionPeriod_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityExTransitionPeriod_40" xlink:type="arc" order="48" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAccountingStandard" xlink:label="loc_deiDocumentAccountingStandard_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentAccountingStandard_40" xlink:type="arc" order="49" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_OtherReportingStandardItemNumber" xlink:label="loc_deiOtherReportingStandardItemNumber_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiOtherReportingStandardItemNumber_40" xlink:type="arc" order="50" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="loc_deiEntityShellCompany_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityShellCompany_40" xlink:type="arc" order="51" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="loc_deiEntityPublicFloat_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityPublicFloat_40" xlink:type="arc" order="52" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityBankruptcyProceedingsReportingCurrent" xlink:label="loc_deiEntityBankruptcyProceedingsReportingCurrent_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityBankruptcyProceedingsReportingCurrent_40" xlink:type="arc" order="53" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="loc_deiEntityCommonStockSharesOutstanding_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiEntityCommonStockSharesOutstanding_40" xlink:type="arc" order="54" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentsIncorporatedByReferenceTextBlock" xlink:label="loc_deiDocumentsIncorporatedByReferenceTextBlock_40" />
      <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaapStatementLineItems" xlink:to="loc_deiDocumentsIncorporatedByReferenceTextBlock_40" xlink:type="arc" order="55" />
    </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>5
<FILENAME>gnw-20190101_lab.xml
<DESCRIPTION>XBRL LABEL FILE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<link:linkbase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrli="http://www.xbrl.org/2003/instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel" roleURI="http://www.xbrl.org/2009/role/negatedLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel" roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel" roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel" roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel" roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel" roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" />
    <link:roleRef xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel" roleURI="http://www.xbrl.org/2009/role/netLabel" />
    <link:labelLink xlink:type="extended" xlink:role="http://www.xbrl.org/2003/role/link">
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CoverAbstract" xlink:label="dei_CoverAbstract" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CoverAbstract" xlink:to="dei_CoverAbstract_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_CoverAbstract_lbl" xml:lang="en-US">Cover [Abstract]</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="dei_DocumentType" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentType" xlink:to="dei_DocumentType_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentType_lbl" xml:lang="en-US">Document Type</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentFlag" xlink:to="dei_AmendmentFlag_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_AmendmentFlag_lbl" xml:lang="en-US">Amendment Flag</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentDescription" xlink:label="dei_AmendmentDescription" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentDescription" xlink:to="dei_AmendmentDescription_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_AmendmentDescription_lbl" xml:lang="en-US">Amendment Description</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentRegistrationStatement" xlink:label="dei_DocumentRegistrationStatement" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentRegistrationStatement" xlink:to="dei_DocumentRegistrationStatement_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentRegistrationStatement_lbl" xml:lang="en-US">Document Registration Statement</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentAnnualReport" xlink:to="dei_DocumentAnnualReport_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentAnnualReport_lbl" xml:lang="en-US">Document Annual Report</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentQuarterlyReport" xlink:to="dei_DocumentQuarterlyReport_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentQuarterlyReport_lbl" xml:lang="en-US">Document Quarterly Report</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentTransitionReport" xlink:to="dei_DocumentTransitionReport_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentTransitionReport_lbl" xml:lang="en-US">Document Transition Report</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyReport" xlink:label="dei_DocumentShellCompanyReport" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentShellCompanyReport" xlink:to="dei_DocumentShellCompanyReport_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentShellCompanyReport_lbl" xml:lang="en-US">Document Shell Company Report</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyEventDate" xlink:label="dei_DocumentShellCompanyEventDate" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentShellCompanyEventDate" xlink:to="dei_DocumentShellCompanyEventDate_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentShellCompanyEventDate_lbl" xml:lang="en-US">Document Shell Company Event Date</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodStartDate" xlink:label="dei_DocumentPeriodStartDate" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodStartDate" xlink:to="dei_DocumentPeriodStartDate_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentPeriodStartDate_lbl" xml:lang="en-US">Document Period Start Date</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodEndDate" xlink:to="dei_DocumentPeriodEndDate_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentPeriodEndDate_lbl" xml:lang="en-US">Document Period End Date</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalPeriodFocus" xlink:to="dei_DocumentFiscalPeriodFocus_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentFiscalPeriodFocus_lbl" xml:lang="en-US">Document Fiscal Period Focus</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalYearFocus" xlink:to="dei_DocumentFiscalYearFocus_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentFiscalYearFocus_lbl" xml:lang="en-US">Document Fiscal Year Focus</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CurrentFiscalYearEndDate" xlink:to="dei_CurrentFiscalYearEndDate_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_CurrentFiscalYearEndDate_lbl" xml:lang="en-US">Current Fiscal Year End Date</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFileNumber" xlink:to="dei_EntityFileNumber_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityFileNumber_lbl" xml:lang="en-US">Entity File Number</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityRegistrantName" xlink:to="dei_EntityRegistrantName_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityRegistrantName_lbl" xml:lang="en-US">Entity Registrant Name</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCentralIndexKey" xlink:to="dei_EntityCentralIndexKey_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityCentralIndexKey_lbl" xml:lang="en-US">Entity Central Index Key</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPrimarySicNumber" xlink:label="dei_EntityPrimarySicNumber" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityPrimarySicNumber" xlink:to="dei_EntityPrimarySicNumber_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityPrimarySicNumber_lbl" xml:lang="en-US">Entity Primary SIC Number</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityTaxIdentificationNumber" xlink:to="dei_EntityTaxIdentificationNumber_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityTaxIdentificationNumber_lbl" xml:lang="en-US">Entity Tax Identification Number</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityIncorporationStateCountryCode" xlink:to="dei_EntityIncorporationStateCountryCode_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityIncorporationStateCountryCode_lbl" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine1" xlink:to="dei_EntityAddressAddressLine1_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressAddressLine1_lbl" xml:lang="en-US">Entity Address, Address Line One</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine2" xlink:label="dei_EntityAddressAddressLine2" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine2" xlink:to="dei_EntityAddressAddressLine2_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressAddressLine2_lbl" xml:lang="en-US">Entity Address, Address Line Two</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine3" xlink:label="dei_EntityAddressAddressLine3" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine3" xlink:to="dei_EntityAddressAddressLine3_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressAddressLine3_lbl" xml:lang="en-US">Entity Address, Address Line Three</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCityOrTown" xlink:to="dei_EntityAddressCityOrTown_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressCityOrTown_lbl" xml:lang="en-US">Entity Address, City or Town</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressStateOrProvince" xlink:to="dei_EntityAddressStateOrProvince_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressStateOrProvince_lbl" xml:lang="en-US">Entity Address, State or Province</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCountry" xlink:label="dei_EntityAddressCountry" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCountry" xlink:to="dei_EntityAddressCountry_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressCountry_lbl" xml:lang="en-US">Entity Address, Country</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressPostalZipCode" xlink:to="dei_EntityAddressPostalZipCode_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityAddressPostalZipCode_lbl" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CountryRegion" xlink:label="dei_CountryRegion" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CountryRegion" xlink:to="dei_CountryRegion_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_CountryRegion_lbl" xml:lang="en-US">Country Region</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CityAreaCode" xlink:to="dei_CityAreaCode_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_CityAreaCode_lbl" xml:lang="en-US">City Area Code</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LocalPhoneNumber" xlink:to="dei_LocalPhoneNumber_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_LocalPhoneNumber_lbl" xml:lang="en-US">Local Phone Number</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Extension" xlink:label="dei_Extension" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Extension" xlink:to="dei_Extension_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_Extension_lbl" xml:lang="en-US">Extension</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_WrittenCommunications" xlink:label="dei_WrittenCommunications" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_WrittenCommunications" xlink:to="dei_WrittenCommunications_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_WrittenCommunications_lbl" xml:lang="en-US">Written Communications</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SolicitingMaterial" xlink:label="dei_SolicitingMaterial" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SolicitingMaterial" xlink:to="dei_SolicitingMaterial_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_SolicitingMaterial_lbl" xml:lang="en-US">Soliciting Material</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementTenderOffer" xlink:label="dei_PreCommencementTenderOffer" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_PreCommencementTenderOffer" xlink:to="dei_PreCommencementTenderOffer_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_PreCommencementTenderOffer_lbl" xml:lang="en-US">Pre-commencement Tender Offer</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementIssuerTenderOffer" xlink:label="dei_PreCommencementIssuerTenderOffer" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_PreCommencementIssuerTenderOffer" xlink:to="dei_PreCommencementIssuerTenderOffer_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_PreCommencementIssuerTenderOffer_lbl" xml:lang="en-US">Pre-commencement Issuer Tender Offer</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12bTitle" xlink:to="dei_Security12bTitle_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_Security12bTitle_lbl" xml:lang="en-US">Title of 12(b) Security</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_NoTradingSymbolFlag" xlink:label="dei_NoTradingSymbolFlag" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_NoTradingSymbolFlag" xlink:to="dei_NoTradingSymbolFlag_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_NoTradingSymbolFlag_lbl" xml:lang="en-US">No Trading Symbol Flag</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_TradingSymbol" xlink:to="dei_TradingSymbol_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_TradingSymbol_lbl" xml:lang="en-US">Trading Symbol</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityExchangeName" xlink:to="dei_SecurityExchangeName_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_SecurityExchangeName_lbl" xml:lang="en-US">Security Exchange Name</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12gTitle" xlink:label="dei_Security12gTitle" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12gTitle" xlink:to="dei_Security12gTitle_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_Security12gTitle_lbl" xml:lang="en-US">Title of 12(g) Security</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityReportingObligation" xlink:label="dei_SecurityReportingObligation" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityReportingObligation" xlink:to="dei_SecurityReportingObligation_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_SecurityReportingObligation_lbl" xml:lang="en-US">Security Reporting Obligation</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AnnualInformationForm" xlink:label="dei_AnnualInformationForm" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AnnualInformationForm" xlink:to="dei_AnnualInformationForm_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_AnnualInformationForm_lbl" xml:lang="en-US">Annual Information Form</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditedAnnualFinancialStatements" xlink:label="dei_AuditedAnnualFinancialStatements" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AuditedAnnualFinancialStatements" xlink:to="dei_AuditedAnnualFinancialStatements_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_AuditedAnnualFinancialStatements_lbl" xml:lang="en-US">Audited Annual Financial Statements</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityWellKnownSeasonedIssuer" xlink:to="dei_EntityWellKnownSeasonedIssuer_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityWellKnownSeasonedIssuer_lbl" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityVoluntaryFilers" xlink:to="dei_EntityVoluntaryFilers_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityVoluntaryFilers_lbl" xml:lang="en-US">Entity Voluntary Filers</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCurrentReportingStatus" xlink:to="dei_EntityCurrentReportingStatus_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityCurrentReportingStatus_lbl" xml:lang="en-US">Entity Current Reporting Status</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityInteractiveDataCurrent" xlink:to="dei_EntityInteractiveDataCurrent_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityInteractiveDataCurrent_lbl" xml:lang="en-US">Entity Interactive Data Current</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFilerCategory" xlink:to="dei_EntityFilerCategory_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityFilerCategory_lbl" xml:lang="en-US">Entity Filer Category</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntitySmallBusiness" xlink:to="dei_EntitySmallBusiness_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntitySmallBusiness_lbl" xml:lang="en-US">Entity Small Business</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityEmergingGrowthCompany" xlink:to="dei_EntityEmergingGrowthCompany_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityEmergingGrowthCompany_lbl" xml:lang="en-US">Entity Emerging Growth Company</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityExTransitionPeriod" xlink:label="dei_EntityExTransitionPeriod" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityExTransitionPeriod" xlink:to="dei_EntityExTransitionPeriod_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityExTransitionPeriod_lbl" xml:lang="en-US">Elected Not To Use the Extended Transition Period</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAccountingStandard" xlink:label="dei_DocumentAccountingStandard" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentAccountingStandard" xlink:to="dei_DocumentAccountingStandard_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentAccountingStandard_lbl" xml:lang="en-US">Document Accounting Standard</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_OtherReportingStandardItemNumber" xlink:label="dei_OtherReportingStandardItemNumber" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_OtherReportingStandardItemNumber" xlink:to="dei_OtherReportingStandardItemNumber_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_OtherReportingStandardItemNumber_lbl" xml:lang="en-US">Other Reporting Standard Item Number</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityShellCompany" xlink:to="dei_EntityShellCompany_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityShellCompany_lbl" xml:lang="en-US">Entity Shell Company</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityPublicFloat" xlink:to="dei_EntityPublicFloat_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityPublicFloat_lbl" xml:lang="en-US">Entity Public Float</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityBankruptcyProceedingsReportingCurrent" xlink:label="dei_EntityBankruptcyProceedingsReportingCurrent" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityBankruptcyProceedingsReportingCurrent" xlink:to="dei_EntityBankruptcyProceedingsReportingCurrent_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityBankruptcyProceedingsReportingCurrent_lbl" xml:lang="en-US">Entity Bankruptcy Proceedings, Reporting Current</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCommonStockSharesOutstanding" xlink:to="dei_EntityCommonStockSharesOutstanding_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_EntityCommonStockSharesOutstanding_lbl" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentsIncorporatedByReferenceTextBlock" xlink:label="dei_DocumentsIncorporatedByReferenceTextBlock" />
      <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentsIncorporatedByReferenceTextBlock" xlink:to="dei_DocumentsIncorporatedByReferenceTextBlock_lbl" xlink:type="arc" />
      <link:label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label" xlink:label="dei_DocumentsIncorporatedByReferenceTextBlock_lbl" xml:lang="en-US">Documents Incorporated by Reference [Text Block]</link:label>
    </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>6
<FILENAME>gnw-20190101_pre.xml
<DESCRIPTION>XBRL PRESENTATION FILE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<link:linkbase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrli="http://www.xbrl.org/2003/instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
    <link:roleRef roleURI="http://globenewswire.com/role/Cover" xlink:href="gnw-20190101.xsd#Cover" xlink:type="simple" />
    <link:presentationLink xlink:type="extended" xlink:role="http://globenewswire.com/role/Cover" xlink:title="00000001 - Document - Cover">
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CoverAbstract" xlink:label="loc_deiCoverAbstract" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="loc_deiDocumentType" />
      <link:presentationArc order="0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentType" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="loc_deiAmendmentFlag" />
      <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiAmendmentFlag" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentDescription" xlink:label="loc_deiAmendmentDescription" />
      <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiAmendmentDescription" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentRegistrationStatement" xlink:label="loc_deiDocumentRegistrationStatement" />
      <link:presentationArc order="30" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentRegistrationStatement" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="loc_deiDocumentAnnualReport" />
      <link:presentationArc order="40" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentAnnualReport" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentQuarterlyReport" xlink:label="loc_deiDocumentQuarterlyReport" />
      <link:presentationArc order="50" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentQuarterlyReport" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="loc_deiDocumentTransitionReport" />
      <link:presentationArc order="60" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentTransitionReport" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyReport" xlink:label="loc_deiDocumentShellCompanyReport" />
      <link:presentationArc order="70" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentShellCompanyReport" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentShellCompanyEventDate" xlink:label="loc_deiDocumentShellCompanyEventDate" />
      <link:presentationArc order="80" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentShellCompanyEventDate" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodStartDate" xlink:label="loc_deiDocumentPeriodStartDate" />
      <link:presentationArc order="90" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentPeriodStartDate" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="loc_deiDocumentPeriodEndDate" />
      <link:presentationArc order="100" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentPeriodEndDate" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="loc_deiDocumentFiscalPeriodFocus" />
      <link:presentationArc order="110" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentFiscalPeriodFocus" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalYearFocus" xlink:label="loc_deiDocumentFiscalYearFocus" />
      <link:presentationArc order="120" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentFiscalYearFocus" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="loc_deiCurrentFiscalYearEndDate" />
      <link:presentationArc order="130" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiCurrentFiscalYearEndDate" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="loc_deiEntityFileNumber" />
      <link:presentationArc order="140" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityFileNumber" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="loc_deiEntityRegistrantName" />
      <link:presentationArc order="150" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityRegistrantName" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="loc_deiEntityCentralIndexKey" />
      <link:presentationArc order="160" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityCentralIndexKey" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPrimarySicNumber" xlink:label="loc_deiEntityPrimarySicNumber" />
      <link:presentationArc order="170" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityPrimarySicNumber" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="loc_deiEntityTaxIdentificationNumber" />
      <link:presentationArc order="180" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityTaxIdentificationNumber" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="loc_deiEntityIncorporationStateCountryCode" />
      <link:presentationArc order="190" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityIncorporationStateCountryCode" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="loc_deiEntityAddressAddressLine1" />
      <link:presentationArc order="200" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressAddressLine1" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine2" xlink:label="loc_deiEntityAddressAddressLine2" />
      <link:presentationArc order="210" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressAddressLine2" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine3" xlink:label="loc_deiEntityAddressAddressLine3" />
      <link:presentationArc order="220" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressAddressLine3" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="loc_deiEntityAddressCityOrTown" />
      <link:presentationArc order="230" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressCityOrTown" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="loc_deiEntityAddressStateOrProvince" />
      <link:presentationArc order="240" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressStateOrProvince" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCountry" xlink:label="loc_deiEntityAddressCountry" />
      <link:presentationArc order="250" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressCountry" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="loc_deiEntityAddressPostalZipCode" />
      <link:presentationArc order="260" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityAddressPostalZipCode" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CountryRegion" xlink:label="loc_deiCountryRegion" />
      <link:presentationArc order="270" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiCountryRegion" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="loc_deiCityAreaCode" />
      <link:presentationArc order="280" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiCityAreaCode" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="loc_deiLocalPhoneNumber" />
      <link:presentationArc order="290" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiLocalPhoneNumber" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Extension" xlink:label="loc_deiExtension" />
      <link:presentationArc order="300" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiExtension" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_WrittenCommunications" xlink:label="loc_deiWrittenCommunications" />
      <link:presentationArc order="310" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiWrittenCommunications" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SolicitingMaterial" xlink:label="loc_deiSolicitingMaterial" />
      <link:presentationArc order="320" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiSolicitingMaterial" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementTenderOffer" xlink:label="loc_deiPreCommencementTenderOffer" />
      <link:presentationArc order="330" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiPreCommencementTenderOffer" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_PreCommencementIssuerTenderOffer" xlink:label="loc_deiPreCommencementIssuerTenderOffer" />
      <link:presentationArc order="340" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiPreCommencementIssuerTenderOffer" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="loc_deiSecurity12bTitle" />
      <link:presentationArc order="350" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiSecurity12bTitle" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_NoTradingSymbolFlag" xlink:label="loc_deiNoTradingSymbolFlag" />
      <link:presentationArc order="360" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiNoTradingSymbolFlag" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="loc_deiTradingSymbol" />
      <link:presentationArc order="370" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiTradingSymbol" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="loc_deiSecurityExchangeName" />
      <link:presentationArc order="380" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiSecurityExchangeName" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12gTitle" xlink:label="loc_deiSecurity12gTitle" />
      <link:presentationArc order="390" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiSecurity12gTitle" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityReportingObligation" xlink:label="loc_deiSecurityReportingObligation" />
      <link:presentationArc order="400" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiSecurityReportingObligation" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AnnualInformationForm" xlink:label="loc_deiAnnualInformationForm" />
      <link:presentationArc order="410" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiAnnualInformationForm" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditedAnnualFinancialStatements" xlink:label="loc_deiAuditedAnnualFinancialStatements" />
      <link:presentationArc order="420" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiAuditedAnnualFinancialStatements" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="loc_deiEntityWellKnownSeasonedIssuer" />
      <link:presentationArc order="430" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityWellKnownSeasonedIssuer" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="loc_deiEntityVoluntaryFilers" />
      <link:presentationArc order="440" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityVoluntaryFilers" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="loc_deiEntityCurrentReportingStatus" />
      <link:presentationArc order="450" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityCurrentReportingStatus" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="loc_deiEntityInteractiveDataCurrent" />
      <link:presentationArc order="460" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityInteractiveDataCurrent" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="loc_deiEntityFilerCategory" />
      <link:presentationArc order="470" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityFilerCategory" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="loc_deiEntitySmallBusiness" />
      <link:presentationArc order="480" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntitySmallBusiness" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="loc_deiEntityEmergingGrowthCompany" />
      <link:presentationArc order="490" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityEmergingGrowthCompany" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityExTransitionPeriod" xlink:label="loc_deiEntityExTransitionPeriod" />
      <link:presentationArc order="500" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityExTransitionPeriod" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAccountingStandard" xlink:label="loc_deiDocumentAccountingStandard" />
      <link:presentationArc order="510" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentAccountingStandard" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_OtherReportingStandardItemNumber" xlink:label="loc_deiOtherReportingStandardItemNumber" />
      <link:presentationArc order="520" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiOtherReportingStandardItemNumber" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="loc_deiEntityShellCompany" />
      <link:presentationArc order="530" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityShellCompany" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="loc_deiEntityPublicFloat" />
      <link:presentationArc order="540" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityPublicFloat" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityBankruptcyProceedingsReportingCurrent" xlink:label="loc_deiEntityBankruptcyProceedingsReportingCurrent" />
      <link:presentationArc order="550" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityBankruptcyProceedingsReportingCurrent" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="loc_deiEntityCommonStockSharesOutstanding" />
      <link:presentationArc order="560" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiEntityCommonStockSharesOutstanding" xlink:type="arc" />
      <link:loc xlink:type="locator" xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentsIncorporatedByReferenceTextBlock" xlink:label="loc_deiDocumentsIncorporatedByReferenceTextBlock" />
      <link:presentationArc order="570" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_deiCoverAbstract" xlink:to="loc_deiDocumentsIncorporatedByReferenceTextBlock" xlink:type="arc" />
    </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>8
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.25.0.1</span><table class="report" border="0" cellspacing="2" id="idm45479852782560">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cover<br></strong></div></th>
<th class="th"><div>Feb. 25, 2025</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CoverAbstract', window );"><strong>Cover [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">8-K<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Feb. 25,  2025<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-12648<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">UFP Technologies, Inc.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0000914156<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">04-2314970<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">DE<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">100 Hale Street<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Newburyport<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">MA<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">01950-3504<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">978<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">352-2200<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_WrittenCommunications', window );">Written Communications</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SolicitingMaterial', window );">Soliciting Material</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_PreCommencementTenderOffer', window );">Pre-commencement Tender Offer</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_PreCommencementIssuerTenderOffer', window );">Pre-commencement Issuer Tender Offer</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">UFPT<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NASDAQ<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CoverAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Cover page.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CoverAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period.  The format of the date is YYYY-MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_PreCommencementIssuerTenderOffer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 13e<br> -Subsection 4c<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_PreCommencementIssuerTenderOffer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_PreCommencementTenderOffer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 14d<br> -Subsection 2b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_PreCommencementTenderOffer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SolicitingMaterial">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as soliciting material pursuant to Rule 14a-12 under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Section 14a<br> -Number 240<br> -Subsection 12<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SolicitingMaterial</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_WrittenCommunications">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as written communications pursuant to Rule 425 under the Securities Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Securities Act<br> -Number 230<br> -Section 425<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_WrittenCommunications</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>9
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
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
M>[QRDF=*OHDTK$\CKODTPM"JAD!Q1_\>;2:U@;?X3Y&=KSQ<T:.]CM=J=[P
M ZPZ!<4-OIC*$2P7S_/@ KT;S(9IU1<H;NJ?90B)F6UDBC6&!I%VQV_YL-[%
MB*K.0'%+_Z:$,3R%Q"1)GA[M3==2X4)-;9U6O8#B%CZ7L0B%$>F:/$&-*\'B
M6AY<I9&G:@(4]^R9XJT0TL/A)3NLOF !!.O$+ZO5F?G#]9K(_,K^?=R@?R![
MU#H'LB; !ME&P,KZ?=RG%\* 2<L5H?XORU_)G(<YU%MM6V]0LO4)?7=N9/B*
MH9TL]7%_7B@6V1*;[Y.EK"VP!@%8#"TPDLK9?=R%W[-")KMPP](U/[LZ:Q!Z
M'LT?1K]C3)6E^Q=9^B3A:FVS] $4S,:Z1,;2^OG[GZM^]V37:'?@3\S>49.8
MKT#(N[X!9U:'3>UA8&16;"27TL"VM#C<< ;U;B^ [U=2FO>!W9N6/RT,_P50
M2P,$%     @ 2X%96I^@&_"Q @  X@P   T   !X;"]S='EL97,N>&ULW5=M
M:]LP$/XK0C]@;F)JXI$8MD!AL(U"\V%?E5AV!'KQ9+ES^NNGLVPG:75EW8>Q
MS:')W3VZNT=W)YFN6W>2_.'(N2.]DKK=T*-SS?LD:0]'KEC[SC1<>Z0R5C'G
M55LG;6,Y*UMP4C)9WMQDB6)"TV*M.W6G7$L.IM-N0V]H4JPKH\^6E :#7\H4
M)X],;NB62;&W8EC+E)"G8%Z"X6"DL<1Y*GQ#%V!IGP*\"!JP'.,HH8T%8Q(R
MA._]N/P9,&FM5X64,\$E#89BW3#GN-5W7AD6#\87$!GEW:GQ#&O+3HOE+3T[
M##\^R=[8DMLYS8).IF(M>05TK*B/\.M,DP#HG%%>* 6KC68#A\EC%'S8 Y?R
M 5KXK;J*W5<D].)3"6T@L-5)](1&,80)"L2_C!9B7X2]_:VPI!&/QGWL_&[T
MH'_OC./WEE>B'_2^FO-CT1=X=-8T\O1!BEHK'O;^RPF+-9O\R-%8\>2SP:0<
MO(%;2AZY=>)P:?EA6;/CO9NFJ:]PSLM_D/.?K7/--;=,7I+VH_\W5_DMC)/Q
M]%P<T:L#.EL)7(0;^A7N5WGF0/:=D$[H43N*LN3ZQ3GUX1W;^PO\*KY?7_**
M==+M9G!#S_(77HI.Y?.J>ZC+N.HL?X;[:)'-M[#/)73)>UYN1]76^T$D7O!9
MQP<<GB-WPQ-',)^ Q1' L#P8 \PG>&%Y_J?]K-#]! SCMHHB*]1GA?H$KQBR
M'3Y8GKA/[I_X3O,\3;,,J^AV&V6PQ>J69? 7CX9Q P\L#V1Z6ZWQ;N,3\OH<
M8#U];4*PG>*3B.T4KS4@\;J!1Y['NXWE 0^L"]CL0/YX'IBIN$^:0E<Q;M@)
MQI$\QQ"8Q?B,9AE2G0P^\?Y@IR1-\SR. !9GD*88 J<11S &P %#TG1X#SY[
M'R73>RHY_U=3_ 102P,$%     @ 2X%96I>*NQS     $P(   L   !?<F5L
M<R\N<F5L<YV2N6[#, Q ?\70GC 'T"&(,V7Q%@3Y 5:B#]@2!8I%G;^OVJ5Q
MD L9>3T\$MP>:4#M.*2VBZD8_1!2:5K5N %(MB6/:<Z10J[4+!XUA]) 1-MC
M0[!:+#Y +AEFM[UD%J=SI%>(7->=I3W;+T]!;X"O.DQQ0FE(2S,.\,W2?S+W
M\PPU1>5*(Y5;&GC3Y?YVX$G1H2)8%II%R=.B':5_'<?VD-/IKV,BM'I;Z/EQ
M:%0*CMQC)8QQ8K3^-8+)#^Q^ %!+ P04    " !+@5E:JL0B%C,!   B @
M#P   'AL+W=O<FMB;V]K+GAM;(U1T6[", S\E2H?L!:T(0U17D#;D*8-C8GW
MT+K4(HDKQX6-KY_;JAK27O:4W-FZW%T6%^+3@>B4?'D78FYJD6:>IK&HP=MX
M1PT$G53$WHI"/J:Q8;!EK '$NW2:9;/46PQFN1BUMIS> A(H!"DHV1%[A$O\
MG7<P.6/$ SJ4[]ST=P<F\1C0XQ7*W&0FB35=7HCQ2D&LVQ5,SN5F,@SVP(+%
M'WK7F?RTA]@S8@\?5HWD9I:I8(4<I=_H]:UZ/(,N#Z@5>D(GP&LK\,S4-AB.
MG8RF2&]B]#V,YU#BG/]3(U45%K"FHO409.B1P74&0ZRQB28)UD-N5G0&[O+H
M YMRR"9JZJ8IGJ,.>%,.]D9/)508H'Q3F:B\]E-L.>F.7F=Z_S!YU!Y:YU;*
MO8=7LN48<?R>Y0]02P,$%     @ 2X%96B0>FZ*M    ^ $  !H   !X;"]?
M<F5L<R]W;W)K8F]O:RYX;6PN<F5L<[61/0Z#, R%KQ+E #50J4,%3%U8*RX0
M!?,C$A+%K@JW+X4!D#IT8;*>+7_OR4Z?:!1W;J"V\R1&:P;*9,OL[P"D6[2*
M+L[C,$]J%ZSB688&O-*]:A"2*+I!V#-DGNZ9HIP\_D-T==UI?#C]LCCP#S"\
M7>BI160I2A4:Y$S":+8VP5+BRTR6HJ@R&8HJEG!:(.+)(&UI5GVP3TZTYWD7
M-_=%KLWC":[?#'!X=/X!4$L#!!0    ( $N!65IED'F2&0$  ,\#   3
M6T-O;G1E;G1?5'EP97-=+GAM;*V334[#,!"%KQ)E6R4N+%B@IAM@"UUP 6-/
M&JO^DV=:TMLS3MI*H!(5A4VL>-Z\SYZ7K-Z/$;#HG?78E!U1?!0"50=.8ATB
M>*ZT(3E)_)JV(DJUDUL0]\OE@U#!$WBJ*'N4Z]4SM')OJ7CI>1M-\$V9P&)9
M/(W"S&I*&:,U2A+7Q<'K'Y3J1*BY<]!@9R(N6%"*JX1<^1UPZGL[0$I&0[&1
MB5ZE8Y7HK4 Z6L!ZVN+*&4/;&@4ZJ+WCEAIC JFQ R!GZ]%T,4TFGC",S[O9
M_,%F"LC*30H1.;$$?\>=(\G=560C2&2FKW@ALO7L^T%.6X.^D<WC_0QI-^2!
M8ECFS_A[QA?_&\[Q$<+NOS^QO-9.&G_FB^$_7G\!4$L! A0#%     @ 2X%9
M6@=!36*!    L0   !               ( !     &1O8U!R;W!S+V%P<"YX
M;6Q02P$"% ,4    " !+@5E:[/"%)>X    K @  $0              @ &O
M    9&]C4')O<',O8V]R92YX;6Q02P$"% ,4    " !+@5E:F5R<(Q &  "<
M)P  $P              @ ', 0  >&PO=&AE;64O=&AE;64Q+GAM;%!+ 0(4
M Q0    ( $N!65J*PM_^-P0  &80   8              " @0T(  !X;"]W
M;W)K<VAE971S+W-H965T,2YX;6Q02P$"% ,4    " !+@5E:GZ ;\+$"  #B
M#   #0              @ %Z#   >&PO<W1Y;&5S+GAM;%!+ 0(4 Q0    (
M $N!65J7BKL<P    !,"   +              "  58/  !?<F5L<R\N<F5L
M<U!+ 0(4 Q0    ( $N!65JJQ"(6,P$  "("   /              "  3\0
M  !X;"]W;W)K8F]O:RYX;6Q02P$"% ,4    " !+@5E:)!Z;HJT   #X 0
M&@              @ &?$0  >&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E;'-0
M2P$"% ,4    " !+@5E:99!YDAD!  #/ P  $P              @ &$$@
I6T-O;G1E;G1?5'EP97-=+GAM;%!+!08     "0 ) #X"  #.$P     !

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>10
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission.  Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105.
var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0);
e.removeAttribute('id');a.parentNode.appendChild(e)}}
if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'}
e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>11
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* Updated 2009-11-04 */
/* v2.2.0.24 */

/* DefRef Styles */
.report table.authRefData{
	background-color: #def;
	border: 2px solid #2F4497;
	font-size: 1em;
	position: absolute;
}

.report table.authRefData a {
	display: block;
	font-weight: bold;
}

.report table.authRefData p {
	margin-top: 0px;
}

.report table.authRefData .hide {
	background-color: #2F4497;
	padding: 1px 3px 0px 0px;
	text-align: right;
}

.report table.authRefData .hide a:hover {
	background-color: #2F4497;
}

.report table.authRefData .body {
	height: 150px;
	overflow: auto;
	width: 400px;
}

.report table.authRefData table{
	font-size: 1em;
}

/* Report Styles */
.pl a, .pl a:visited {
	color: black;
	text-decoration: none;
}

/* table */
.report {
	background-color: white;
	border: 2px solid #acf;
	clear: both;
	color: black;
	font: normal 8pt Helvetica, Arial, san-serif;
	margin-bottom: 2em;
}

.report hr {
	border: 1px solid #acf;
}

/* Top labels */
.report th {
	background-color: #acf;
	color: black;
	font-weight: bold;
	text-align: center;
}

.report th.void	{
	background-color: transparent;
	color: #000000;
	font: bold 10pt Helvetica, Arial, san-serif;
	text-align: left;
}

.report .pl {
	text-align: left;
	vertical-align: top;
	white-space: normal;
	width: 200px;
	white-space: normal; /* word-wrap: break-word; */
}

.report td.pl a.a {
	cursor: pointer;
	display: block;
	width: 200px;
	overflow: hidden;
}

.report td.pl div.a {
	width: 200px;
}

.report td.pl a:hover {
	background-color: #ffc;
}

/* Header rows... */
.report tr.rh {
	background-color: #acf;
	color: black;
	font-weight: bold;
}

/* Calendars... */
.report .rc {
	background-color: #f0f0f0;
}

/* Even rows... */
.report .re, .report .reu {
	background-color: #def;
}

.report .reu td {
	border-bottom: 1px solid black;
}

/* Odd rows... */
.report .ro, .report .rou {
	background-color: white;
}

.report .rou td {
	border-bottom: 1px solid black;
}

.report .rou table td, .report .reu table td {
	border-bottom: 0px solid black;
}

/* styles for footnote marker */
.report .fn {
	white-space: nowrap;
}

/* styles for numeric types */
.report .num, .report .nump {
	text-align: right;
	white-space: nowrap;
}

.report .nump {
	padding-left: 2em;
}

.report .nump {
	padding: 0px 0.4em 0px 2em;
}

/* styles for text types */
.report .text {
	text-align: left;
	white-space: normal;
}

.report .text .big {
	margin-bottom: 1em;
	width: 17em;
}

.report .text .more {
	display: none;
}

.report .text .note {
	font-style: italic;
	font-weight: bold;
}

.report .text .small {
	width: 10em;
}

.report sup {
	font-style: italic;
}

.report .outerFootnotes {
	font-size: 1em;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>13
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.25.0.1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>1</ContextCount>
  <ElementCount>22</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>0</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>3</UnitCount>
  <MyReports>
    <Report instance="f8k_022525.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>00000001 - Document - Cover</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://globenewswire.com/role/Cover</Role>
      <ShortName>Cover</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File doctype="8-K" isOnlyDei="true" isUsgaap="true" original="f8k_022525.htm">f8k_022525.htm</File>
    <File>gnw-20190101.xsd</File>
    <File>gnw-20190101_def.xml</File>
    <File>gnw-20190101_lab.xml</File>
    <File>gnw-20190101_pre.xml</File>
  </InputFiles>
  <SupplementalFiles/>
  <BaseTaxonomies>
    <BaseTaxonomy items="22">http://xbrl.sec.gov/dei/2023</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>false</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>15
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "version": "2.2",
 "instance": {
  "f8k_022525.htm": {
   "nsprefix": "gnw",
   "nsuri": "http://globenewswire.com/20190101",
   "dts": {
    "inline": {
     "local": [
      "f8k_022525.htm"
     ]
    },
    "schema": {
     "local": [
      "gnw-20190101.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd",
      "http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-roles-2023.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-roles-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd",
      "https://xbrl.sec.gov/country/2023/country-2023.xsd",
      "https://xbrl.sec.gov/dei/2023/dei-2023.xsd"
     ]
    },
    "definitionLink": {
     "local": [
      "gnw-20190101_def.xml"
     ]
    },
    "labelLink": {
     "local": [
      "gnw-20190101_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "gnw-20190101_pre.xml"
     ]
    }
   },
   "keyStandard": 22,
   "keyCustom": 0,
   "axisStandard": 0,
   "axisCustom": 0,
   "memberStandard": 0,
   "memberCustom": 0,
   "hidden": {
    "total": 2,
    "http://xbrl.sec.gov/dei/2023": 2
   },
   "contextCount": 1,
   "entityCount": 1,
   "segmentCount": 0,
   "elementCount": 59,
   "unitCount": 3,
   "baseTaxonomies": {
    "http://xbrl.sec.gov/dei/2023": 22
   },
   "report": {
    "R1": {
     "role": "http://globenewswire.com/role/Cover",
     "longName": "00000001 - Document - Cover",
     "shortName": "Cover",
     "isDefault": "true",
     "groupType": "document",
     "subGroupType": "",
     "menuCat": "Cover",
     "order": "1",
     "firstAnchor": {
      "contextRef": "Form8K",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "p",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "f8k_022525.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "Form8K",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "p",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "f8k_022525.htm",
      "first": true,
      "unique": true
     }
    }
   },
   "tag": {
    "dei_AmendmentDescription": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AmendmentDescription",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amendment Description",
        "documentation": "Description of changes contained within amended document."
       }
      }
     },
     "auth_ref": []
    },
    "dei_AmendmentFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AmendmentFlag",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amendment Flag",
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission."
       }
      }
     },
     "auth_ref": []
    },
    "dei_AnnualInformationForm": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AnnualInformationForm",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Annual Information Form",
        "documentation": "Boolean flag with value true on a form if it is an annual report containing an annual information form."
       }
      }
     },
     "auth_ref": [
      "r14"
     ]
    },
    "dei_AuditedAnnualFinancialStatements": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AuditedAnnualFinancialStatements",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Audited Annual Financial Statements",
        "documentation": "Boolean flag with value true on a form if it is an annual report containing audited financial statements."
       }
      }
     },
     "auth_ref": [
      "r14"
     ]
    },
    "dei_CityAreaCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CityAreaCode",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "City Area Code",
        "documentation": "Area code of city"
       }
      }
     },
     "auth_ref": []
    },
    "dei_CountryRegion": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CountryRegion",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Country Region",
        "documentation": "Region code of country"
       }
      }
     },
     "auth_ref": []
    },
    "dei_CoverAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CoverAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Cover [Abstract]",
        "documentation": "Cover page."
       }
      }
     },
     "auth_ref": []
    },
    "dei_CurrentFiscalYearEndDate": {
     "xbrltype": "gMonthDayItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CurrentFiscalYearEndDate",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Fiscal Year End Date",
        "documentation": "End date of current fiscal year in the format --MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentAccountingStandard": {
     "xbrltype": "accountingStandardItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentAccountingStandard",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Accounting Standard",
        "documentation": "The basis of accounting the registrant has used to prepare the financial statements included in this filing This can either be 'U.S. GAAP', 'International Financial Reporting Standards', or 'Other'."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "dei_DocumentAnnualReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentAnnualReport",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Annual Report",
        "documentation": "Boolean flag that is true only for a form used as an annual report."
       }
      }
     },
     "auth_ref": [
      "r11",
      "r13",
      "r14"
     ]
    },
    "dei_DocumentFiscalPeriodFocus": {
     "xbrltype": "fiscalPeriodItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentFiscalPeriodFocus",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Period Focus",
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentFiscalYearFocus": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentFiscalYearFocus",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Year Focus",
        "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodEndDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentPeriodEndDate",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Period End Date",
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period.  The format of the date is YYYY-MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodStartDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentPeriodStartDate",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Period Start Date",
        "documentation": "The start date of the period covered in the document, in YYYY-MM-DD format."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentQuarterlyReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentQuarterlyReport",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Quarterly Report",
        "documentation": "Boolean flag that is true only for a form used as an quarterly report."
       }
      }
     },
     "auth_ref": [
      "r12"
     ]
    },
    "dei_DocumentRegistrationStatement": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentRegistrationStatement",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Registration Statement",
        "documentation": "Boolean flag that is true only for a form used as a registration statement."
       }
      }
     },
     "auth_ref": [
      "r0"
     ]
    },
    "dei_DocumentShellCompanyEventDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentShellCompanyEventDate",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Shell Company Event Date",
        "documentation": "Date of event requiring a shell company report."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "dei_DocumentShellCompanyReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentShellCompanyReport",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Shell Company Report",
        "documentation": "Boolean flag that is true for a Shell Company Report pursuant to section 13 or 15(d) of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "dei_DocumentTransitionReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentTransitionReport",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Transition Report",
        "documentation": "Boolean flag that is true only for a form used as a transition report."
       }
      }
     },
     "auth_ref": [
      "r15"
     ]
    },
    "dei_DocumentType": {
     "xbrltype": "submissionTypeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentType",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Type",
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentsIncorporatedByReferenceTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentsIncorporatedByReferenceTextBlock",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Documents Incorporated by Reference [Text Block]",
        "documentation": "Documents incorporated by reference."
       }
      }
     },
     "auth_ref": [
      "r3"
     ]
    },
    "dei_EntityAddressAddressLine1": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressAddressLine1",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Address Line One",
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine2": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressAddressLine2",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Address Line Two",
        "documentation": "Address Line 2 such as Street or Suite number"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine3": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressAddressLine3",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Address Line Three",
        "documentation": "Address Line 3 such as an Office Park"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCityOrTown": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressCityOrTown",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, City or Town",
        "documentation": "Name of the City or Town"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCountry": {
     "xbrltype": "countryCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressCountry",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Country",
        "documentation": "ISO 3166-1 alpha-2 country code."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressPostalZipCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressPostalZipCode",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Postal Zip Code",
        "documentation": "Code for the postal or zip code"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressStateOrProvince": {
     "xbrltype": "stateOrProvinceItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressStateOrProvince",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, State or Province",
        "documentation": "Name of the state or province."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityBankruptcyProceedingsReportingCurrent": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityBankruptcyProceedingsReportingCurrent",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Bankruptcy Proceedings, Reporting Current",
        "documentation": "For registrants involved in bankruptcy proceedings during the preceding five years, the value Yes indicates that the registrant has filed all documents and reports required to be filed by Section 12, 13 or 15(d) of the Securities Exchange Act of 1934 subsequent to the distribution of securities under a plan confirmed by a court; the value No indicates the registrant has not.  Registrants not involved in bankruptcy proceedings during the preceding five years should not report this element."
       }
      }
     },
     "auth_ref": [
      "r6"
     ]
    },
    "dei_EntityCentralIndexKey": {
     "xbrltype": "centralIndexKeyItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityCentralIndexKey",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Central Index Key",
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityCommonStockSharesOutstanding",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Common Stock, Shares Outstanding",
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCurrentReportingStatus": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityCurrentReportingStatus",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Current Reporting Status",
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityEmergingGrowthCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityEmergingGrowthCompany",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Emerging Growth Company",
        "documentation": "Indicate if registrant meets the emerging growth company criteria."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityExTransitionPeriod": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityExTransitionPeriod",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Elected Not To Use the Extended Transition Period",
        "documentation": "Indicate if an emerging growth company has elected not to use the extended transition period for complying with any new or revised financial accounting standards."
       }
      }
     },
     "auth_ref": [
      "r19"
     ]
    },
    "dei_EntityFileNumber": {
     "xbrltype": "fileNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityFileNumber",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity File Number",
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityFilerCategory": {
     "xbrltype": "filerCategoryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityFilerCategory",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Filer Category",
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityIncorporationStateCountryCode": {
     "xbrltype": "edgarStateCountryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityIncorporationStateCountryCode",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Incorporation, State or Country Code",
        "documentation": "Two-character EDGAR code representing the state or country of incorporation."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityInteractiveDataCurrent": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityInteractiveDataCurrent",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Interactive Data Current",
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)."
       }
      }
     },
     "auth_ref": [
      "r16"
     ]
    },
    "dei_EntityPrimarySicNumber": {
     "xbrltype": "sicNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityPrimarySicNumber",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Primary SIC Number",
        "documentation": "Primary Standard Industrial Classification (SIC) Number for the Entity."
       }
      }
     },
     "auth_ref": [
      "r14"
     ]
    },
    "dei_EntityPublicFloat": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityPublicFloat",
     "crdr": "credit",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Public Float",
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityRegistrantName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityRegistrantName",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Registrant Name",
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityShellCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityShellCompany",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Shell Company",
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntitySmallBusiness": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntitySmallBusiness",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Small Business",
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityTaxIdentificationNumber": {
     "xbrltype": "employerIdItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityTaxIdentificationNumber",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Tax Identification Number",
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_EntityVoluntaryFilers": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityVoluntaryFilers",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Voluntary Filers",
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityWellKnownSeasonedIssuer",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Well-known Seasoned Issuer",
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A."
       }
      }
     },
     "auth_ref": [
      "r17"
     ]
    },
    "dei_Extension": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "Extension",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Extension",
        "documentation": "Extension number for local phone number."
       }
      }
     },
     "auth_ref": []
    },
    "dei_LocalPhoneNumber": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "LocalPhoneNumber",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Local Phone Number",
        "documentation": "Local phone number for entity."
       }
      }
     },
     "auth_ref": []
    },
    "dei_NoTradingSymbolFlag": {
     "xbrltype": "trueItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "NoTradingSymbolFlag",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "No Trading Symbol Flag",
        "documentation": "Boolean flag that is true only for a security having no trading symbol."
       }
      }
     },
     "auth_ref": []
    },
    "dei_OtherReportingStandardItemNumber": {
     "xbrltype": "otherReportingStandardItemNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "OtherReportingStandardItemNumber",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Reporting Standard Item Number",
        "documentation": "\"Item 17\" or \"Item 18\" specified when the basis of accounting is neither US GAAP nor IFRS."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "dei_PreCommencementIssuerTenderOffer": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "PreCommencementIssuerTenderOffer",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Pre-commencement Issuer Tender Offer",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r7"
     ]
    },
    "dei_PreCommencementTenderOffer": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "PreCommencementTenderOffer",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Pre-commencement Tender Offer",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r8"
     ]
    },
    "dei_Security12bTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "Security12bTitle",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of 12(b) Security",
        "documentation": "Title of a 12(b) registered security."
       }
      }
     },
     "auth_ref": [
      "r1"
     ]
    },
    "dei_Security12gTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "Security12gTitle",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of 12(g) Security",
        "documentation": "Title of a 12(g) registered security."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "dei_SecurityExchangeName": {
     "xbrltype": "edgarExchangeCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "SecurityExchangeName",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Security Exchange Name",
        "documentation": "Name of the Exchange on which a security is registered."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "dei_SecurityReportingObligation": {
     "xbrltype": "securityReportingObligationItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "SecurityReportingObligation",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Security Reporting Obligation",
        "documentation": "15(d), indicating whether the security has a reporting obligation under that section of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r9"
     ]
    },
    "dei_SolicitingMaterial": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "SolicitingMaterial",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Soliciting Material",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as soliciting material pursuant to Rule 14a-12 under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r10"
     ]
    },
    "dei_TradingSymbol": {
     "xbrltype": "tradingSymbolItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "TradingSymbol",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trading Symbol",
        "documentation": "Trading symbol of an instrument as listed on an exchange."
       }
      }
     },
     "auth_ref": []
    },
    "dei_WrittenCommunications": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "WrittenCommunications",
     "presentation": [
      "http://globenewswire.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Written Communications",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as written communications pursuant to Rule 425 under the Securities Act."
       }
      }
     },
     "auth_ref": [
      "r18"
     ]
    }
   }
  }
 },
 "std_ref": {
  "r0": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12"
  },
  "r1": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b"
  },
  "r2": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r3": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-23"
  },
  "r4": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r5": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "g"
  },
  "r6": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12, 13, 15d"
  },
  "r7": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "13e",
   "Subsection": "4c"
  },
  "r8": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "14d",
   "Subsection": "2b"
  },
  "r9": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "15",
   "Subsection": "d"
  },
  "r10": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Section": "14a",
   "Number": "240",
   "Subsection": "12"
  },
  "r11": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 10-K",
   "Number": "249",
   "Section": "310"
  },
  "r12": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 10-Q",
   "Number": "240",
   "Section": "308",
   "Subsection": "a"
  },
  "r13": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Number": "249",
   "Section": "220",
   "Subsection": "f"
  },
  "r14": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Number": "249",
   "Section": "240",
   "Subsection": "f"
  },
  "r15": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r16": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-T",
   "Number": "232",
   "Section": "405"
  },
  "r17": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Securities Act",
   "Number": "230",
   "Section": "405"
  },
  "r18": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Securities Act",
   "Number": "230",
   "Section": "425"
  },
  "r19": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Securities Act",
   "Number": "7A",
   "Section": "B",
   "Subsection": "2"
  }
 }
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>16
<FILENAME>0001171843-25-001061-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001171843-25-001061-xbrl.zip
M4$L#!!0    ( $N!65IBQI=TER0   0] @ +    97AH7SDY,2YH=&WM/6ES
MV\:2OV#_PSR].+&K1A0 WI+L6EF6_?3*L;V64MG]. 2&)&(08'!(UOOUVST#
M@. E$1) @.2D*@E%SM'3=\_1??Z/#U\O;__OVQ7YU^WOG\FW/]Y_OKXD1\<G
M)W\V+T]./MQ^D#^T&AJY]9D;V*'MN<PY.;GZ<O3N?!Q.'.(P=_3VB+O'?]S@
M5YQ9[\Y#.W3XNRMKQ/R/MF.[H_,3^=7YA(>,F)X;<C=\>Q3RG^$)CG)&S#'S
M QZ^O;==R[L/CG6C;1R1N(/+)OSMT:>K+U??+VZ_?C^:C?#[C0"PU]"T1K>C
MZ0V]I_5;V/%$@C+PK <R&)F>X_EOC_XY%/\ H%,2A \.ES <,\<>N:?$MT?C
M\(R(KT)<[]#S)Z?$9%,[A";_X6?0,PA]SQV]N_K??UV_O[XE_7Y#/S^)OSP_
MF:X9V@1PN8_]AP![T@(_'P<P\"G16],P,_P?'[^16VZ.70!\9/. 7+BN%[DF
M?/K.3<^WB*$9+?@<1$X89 # (3>"(^TQ!_N[_R+0431^>_17%(3V\.'HW9>K
M/]__\?W_OGW]?DO)[RP(&I1\Y(,&(4:;(B1M0EY_^OSU_16!IC=_7G^_>D..
MC\GB*BBY=LT&>?V%!1;[^Q1_OWU#"2,6#V!&[A/F6L2$:;T)F3 W&C(SC'SX
MWAL2[HYLEW.?6R3PG A9,2!3WYXPWW8>"-"*A&-.)MRR3>9 =_\'#RD)/8L]
M$)]//3_D,=I<'A+;-;T)QX%_:?>!P2>VX\"0E#3U1O,5&0,O<!R1N8O-6ZU&
M_]=_ZAWM+.XCYH:!FPUR82'28)Y,GY'/[TG3:+1? 3#DETZWT4EF:Y OT"Y@
M#M U'J1%[F&- )36:K1F4!F=ACX/%4X8=Q50@0CHLW$_75Q\$]AD"42<^2[(
M(N ,1K!LP"!\"0!.8 $!B!\L+@J#$/I *_+ZZMO-FQB4;J/=$V/]TFMT>H#+
M8,K-T+[CSD,#V8:LXIF/L!P[Q&5%?C@F?T<,\.\#%2V8]@,W^60 ?S9UP3\M
M*FAWZ4VFS,U0:P'S>B>+DI:^B)+%YGJC,T\HVQ7S!*!0$ VV9V'#]:1+F&IA
M$;)/2U*V#;-(RNK]AC&CP$U*U4=&D C6@:7TN87U5]!:#G&<##$CO0Z*K_T8
MZ8&6\4Q&0]<D*8U&JS-/2G([]KUH- 8V@%GM !!Q'T 3A[. 4_@PA"% !1'X
M:<(LCFO^XKG'8KX)- ))#1!S3B18*)U^Y'L!=O%!@$$'I-][0 (68E.)[LQ/
M-Y]^99/IV47F*R3+M20++@#61.4'4,,?+A86++YKD&\"=A)P3G[]9\\PM+,4
MX(^VRUS3!DUQ[:*>9ZA01"/]C+!0$ V8%1&\A(SU7!_/<DW8A-QQ_X%,10>+
MW-M ?2#@(B,@V,/(<8X?0#XE3_A2J=,$F(#9%OG>(/_FPZ'/'\A[!I1^H.1R
MS&R VR4"5>3RZFLC6>4\[V7GPK_%5()W6\8K\:W1>447F.&K/V*N;2+Q[@'>
M56.)<>Y90#J-KARG!TIN<:"+1Q70LN99.Y.4-DW.U 31S\XC!%#P=*JH&C$"
MUQ+KG$\2@IV?P&=!->8$W@K2(40 M^ 4E %@"Z0F< 7,S<R_(]N7ZA04&%@Z
M'%8WSB[^_9U<H<4%.Q6@_?N3.^:8?'0BS_=,Y@]0W'^'_SN<_"X-EV3JB__Y
MF'P!& S 1 (=HJE0DS"?GP(C! U]'6$B?R(^F#2- NPIX- V(X?Y *:T] E%
M4UTXA,&@#W@&!'2-A0X;":;,Y/,<*-DN9;$_N0"#C1@,!!/'U$.DQ'*-0,23
M?/  4%B,"Q[+-!HXP%= +V8*\V.QD",BR2 *P,('"#KJ"?3R;#>2"@0ACG'.
M?]J!T!K?O8$'JR,WD3]"@B7])0JGX)JZT#D=5;ITW ^ N6&8J<_O;"\*)/!!
M;!X<!$:H6QR#"[P)J62.X]W#<- !0 >1'0(Z!#S27X%Q!=&[9P*E(:+;,W\0
M;_"7Y-% JJC,FA$SH/E\R6:Q) PS:.!2:[-[YH/5;*#ZBQL#Z;G)A%A9?"(&
M#@E@(T72"HP[P'&2*CX7_ H065;LTPMTA7+1\.-T@NQ@NP!VB!\!F+$-G(L@
MNMX]B<",^_?LX4D9B[GEL^?]F+$J+,P'J 7CF#8N@@W0Z@C]&*'']Q3KC=D=
M1^B%7;@GX)Y+>&?(LSBH!4^L@Z(N<6P@";BND8_R2\F(@[\I_$27C;ALAJL?
M,//'L3<<VB8"&0!(Z'0#R2?LIST!7UWRX' HJ2KF$NSFR? (&015F%Q'S+H-
MDL <WN-(?WG(?][(9Y, 6 X<^[$T@U(DP<.'$<?,&<:.0EOR#O$]6%\H!L7V
M4WO*05P%U\P)D#=%!RIR 2(>(-^DE*:(?*1B+%V)S,*"H ?TE" (C18O: A:
M QUIL-]<R%VJY= YP6 &W((1]'+%2,!((6HF 7+"WN*7.^9$PFM()4;@!?C.
M-NVIE @FN2!65<#B8'I \$ E@+2-N3-%_ )LY@\'_40K,N78%A^$2W1 015F
M7NH7BX-R?]HJ1.]FOL&_P ES,"P,3L]/HG=QI\@AX<,40BO+#DSHX=A)K"6=
MG./0FYYB0$<RL5<\ <1>CWJ&,X4@W4#A6,[[AT"0R8+7]ZAGNS ?>!O2H"9.
MZ&Q*&67@E'/A1SSC7(CQV(SG)XZ=&RL?Y_$ U@]#Q]C-S6"EE[K;$%-U%_UM
M-"NHET/TG64,B+H@Z=UM:'%G?;:\!OF8>F#KIFUJ#4/V;+6U1B_% JA%A\>M
M5\XM-#@(6P!&"W44,/@O[68&\&<AZY-PJ4&%#&T8$OT#( $&]Z#+D P2H->Q
MPLPZX#'[O\FL#> V^KB\U2P9,YS11B\O2_7Y8 88[5-FGHWX3<ZLOTJFZ"'[
M/<;*?Z*605T&R@$U-9F"?AZC@D'#&KE"/Z$;Y 9)<)25G)4AR1(\S5?K@7\>
MN6ZX@V[5S.K(: 5--&@ZAH9D!G5"M20&2BF61V/T9IL,4E_[<GD@-6MD>(F:
M'^?#D@2<K+HP$%=B4\.8A;Z)@@(YZ6^DGR[6\"^=S3F38)A-%]/:KH1+3 9?
M=9.OLK%\.L!:&9D?61=B($;4&[U7TB60/VBS'SKK1"4-Y^9XABYNF3Q+.ZX6
MS;7!=(9,O5:B]4"_:TMVI/5,AMADZI;6:,FI^T"TQ:D[[9D>+-R>K-K/B>=8
M*T"K]W)23!D9H5H)KMQM>AQ;<^"DYF7E]F J2?J,;(_A24XO__LRG,6;*D_L
M7LW@[W83S0.&LK69U*^92Z!L[39A!F7]Q%?1M>Z,MV*4 4!&%@PYY_G )^_D
M?P1Z3B)GC1,8[XI?B+ADS3[VW-XY#K.\;6]C< #SN]Z=U/*;['2COO8Y6+H
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
M4A:_!O:P[ PD@(C GM@.\^4*&^0&ESC'6*8369R20102+*#B>GBX-L'<=D
MFFW+!AXT>A$%SD1W8%CX(1),)UO)<_950SN>*7X/J&16)M JJ D]; !KR,RL
M]X*M@F@X!,QQUWQ8-VX03:? :L"CMDL!#?)Y^P.%Q8/#8X'+$R=_F=KH(X'<
M>9%O8A8*B3($'C[Y*(AXO2B04@I+<V.Q0!&3+,6'L/XP.-L,F<P$  );C &J
M GJ,DK5Y4SQ7B=SYU2X.,/*]>YAZZH7(XGC#4SAUZ4@ 3-QF#42(XE%,%NR;
M%2% I\]-\0)Y!N?&2Q-^Y@-*-B#.L?_#1;,!2/X022D%"? Y],$* ,+CN9!0
M,)3#19[DS+Q9:L!$L>: U3Z +L'%K@#,!#WK3;@?SR:Y"WJ.0"])JL:\ '[U
M'7=@B#4-TX$L#KBQS@2N$ K;!2F4Z O'; X5B?H123H!#0&,@;H>2))PDV#J
M@(F,)YSYJ)N%ZDL_IT7UZ.9-$Z9 )H#&T(;=,5 ,"$;"X\@76>3&VF*],1$*
M8R $()HBKP1!-)E*-$V8Q5&S9M<.JC661LR_2<9@LN!O@34?A7;P%Z!9,(<=
M_  H(V X80J1W>4+6T^<:X#( X$"B5T353(L(@+4P?>1E-;( ?A@*,L>#J$'
MJE??%M9%\%8X]J Y$!8-*L"/^ <&B\U!\/BZP8QE 4"2YIP^.2:=XZPG=/%I
M%I>_I?8R*U3\)]C?4'+0( IL%[T%?)\,3 Q,";SFHR0!>RY)S]")$/@$DE@_
MTIBW)?*GOFW&^F,>E*GO6= ]#A^Y?X?MSB09I4SB% !@*C( ! JV5#*K6CZA
M/I@Y1@-(9B;2FJF1U3J*KID%L]_&ZA:YD_E LB!AW3]<@7WAO@49#A0W-'W!
MELNCHN(2[! K:/P,X^'7"0*@G\"P+3YB0U Z%K(4P'!QG65V.3[^/2</@.<0
M20%"'3MR@30\H$:A0>@ V$??H6_"K$=BC*-+%F$K!ISP!2P$^9[JL_4^ZU$R
MQ8SD0R %:AAAY19</YPG=?^@R\0. D3OZZ.;J\NC-Y3<CVWTM(#%9UK(DS-
M"QC]G@^ )/!S2.[O[QNPLL;(NVN0VXPVB8471,JR W#9[4D@M*\W '\Z]BF
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
MX;.\_LD)(3?I+.:8"L\<]B(:J!HD,(!IREQZ'#*H)D91IC+!)9J R1=Z)-^
M@P0U@;S^)W-*VP\SCWYM\>W!$YMF1 \1LKKY)NHW'%?4&Q\V^F3LMSMGK /9
MEYH5N/L&A_*WW\XS%[>;>0%P5V3Z<=',IW-+IEL_^VZ599GTH&*">NV7$GF
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
MA"^* ,VA^4%]HQ 8@R--[[LGOA[, ONBVO(;^\N^C-4L^1]02P$"% ,4
M" !+@5E:8L:7=)<D   $/0( "P              @ $     97AH7SDY,2YH
M=&U02P$"% ,4    " !+@5E:;5_!490.  !Z/0  #@              @ '
M)   9CAK7S R,C4R-2YH=&U02P$"% ,4    " !+@5E:A257J[ "  #5"P
M$               @ & ,P  9VYW+3(P,3DP,3 Q+GAS9%!+ 0(4 Q0    (
M $N!65JO[VJ!40@  (=D   4              "  5XV  !G;G<M,C Q.3 Q
M,#%?9&5F+GAM;%!+ 0(4 Q0    ( $N!65IG4='PE@H  )B%   4
M      "  >$^  !G;G<M,C Q.3 Q,#%?;&%B+GAM;%!+ 0(4 Q0    ( $N!
M65ILP4#5]P8  /96   4              "  :E)  !G;G<M,C Q.3 Q,#%?
=<')E+GAM;%!+!08     !@ & 'D!  #24      !

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>17
<FILENAME>f8k_022525_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.sec.gov/dei/2023"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:xlink="http://www.w3.org/1999/xlink">
    <link:schemaRef xlink:href="gnw-20190101.xsd" xlink:type="simple"/>
    <context id="Form8K">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914156</identifier>
        </entity>
        <period>
            <startDate>2025-02-25</startDate>
            <endDate>2025-02-25</endDate>
        </period>
    </context>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="Shares">
        <measure>shares</measure>
    </unit>
    <unit id="USDPShares">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <dei:EntityCentralIndexKey contextRef="Form8K" id="ixv-142">0000914156</dei:EntityCentralIndexKey>
    <dei:AmendmentFlag contextRef="Form8K" id="ixv-143">false</dei:AmendmentFlag>
    <dei:DocumentType contextRef="Form8K" id="ixv-163">8-K</dei:DocumentType>
    <dei:DocumentPeriodEndDate contextRef="Form8K" id="ixv-164">2025-02-25</dei:DocumentPeriodEndDate>
    <dei:EntityRegistrantName contextRef="Form8K" id="ixv-165">UFP Technologies, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode contextRef="Form8K" id="ixv-166">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityFileNumber contextRef="Form8K" id="ixv-167">001-12648</dei:EntityFileNumber>
    <dei:EntityTaxIdentificationNumber contextRef="Form8K" id="ixv-168">04-2314970</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="Form8K" id="ixv-169">100 Hale Street</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="Form8K" id="ixv-170">Newburyport</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="Form8K" id="ixv-171">MA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="Form8K" id="ixv-172">01950-3504</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="Form8K" id="ixv-173">978</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="Form8K" id="ixv-174">352-2200</dei:LocalPhoneNumber>
    <dei:WrittenCommunications contextRef="Form8K" id="ixv-175">false</dei:WrittenCommunications>
    <dei:SolicitingMaterial contextRef="Form8K" id="ixv-176">false</dei:SolicitingMaterial>
    <dei:PreCommencementTenderOffer contextRef="Form8K" id="ixv-177">false</dei:PreCommencementTenderOffer>
    <dei:PreCommencementIssuerTenderOffer contextRef="Form8K" id="ixv-178">false</dei:PreCommencementIssuerTenderOffer>
    <dei:Security12bTitle contextRef="Form8K" id="ixv-179">Common Stock</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="Form8K" id="ixv-180">UFPT</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="Form8K" id="ixv-181">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityEmergingGrowthCompany contextRef="Form8K" id="ixv-182">false</dei:EntityEmergingGrowthCompany>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
